php连接代码怎么写

php连接代码怎么写
最新回答
待我学渣成霸

2021-07-22 20:53:19

以下是使用PHP连接数据库的详细代码示例及说明,涵盖MySQLi和PDO两种主流方式:

一、MySQLi面向对象方式(推荐)<?php// 1. 创建连接$servername = "localhost";$username = "root";$password = "password";$dbname = "myDB";$conn = new mysqli($servername, $username, $password, $dbname);// 2. 检查连接if ($conn->connect_error) { die("连接失败: " . $conn->connect_error);}// 3. 设置字符集$conn->set_charset("utf8mb4"); // 推荐使用utf8mb4支持完整Unicode(包括emoji)// 4. 执行查询示例$sql = "SELECT id, username, email FROM users";$result = $conn->query($sql);if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "ID: " . $row["id"]. " - 用户名: " . $row["username"]. " - 邮箱: " . $row["email"]. "<br>"; }} else { echo "0 结果";}// 5. 插入数据示例$stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (?, ?)");$stmt->bind_param("ss", $username, $email); // 'ss'表示两个字符串参数$username = "testuser";$email = "test@example.com";$stmt->execute();// 6. 关闭连接$conn->close();?>二、PDO方式(支持多种数据库)<?php// 1. 创建连接$dsn = "mysql:host=localhost;dbname=myDB;charset=utf8mb4";$username = "root";$password = "password";try { $conn = new PDO($dsn, $username, $password); // 设置错误处理模式为异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 2. 执行查询示例 $stmt = $conn->query("SELECT id, username FROM users"); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { print_r($row); } // 3. 预处理语句插入数据 $stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (:username, :email)"); $stmt->bindParam(':username', $username); $stmt->bindParam(':email', $email); $username = "pdo_user"; $email = "pdo@example.com"; $stmt->execute();} catch(PDOException $e) { echo "连接失败: " . $e->getMessage();}// 连接会在脚本结束时自动关闭,也可手动关闭:$conn = null;?>关键注意事项:
  1. 安全建议

    永远不要将数据库凭据直接写在代码中,建议使用环境变量或配置文件(如.env)

    示例配置文件读取方式:$dotenv = DotenvDotenv::createImmutable(__DIR__);$dotenv->load();$dbname = $_ENV['DB_NAME'];

  2. 字符集选择

    utf8mb4比utf8更完整(支持4字节字符如emoji)

    创建数据库时也应指定字符集:CREATE DATABASE myDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

  3. 错误处理

    MySQLi:使用$conn->connect_error检查连接错误

    PDO:通过try-catch捕获PDOException

  4. 性能优化

    对于频繁操作,考虑使用持久连接(MySQLi添加p:前缀,PDO设置PDO::ATTR_PERSISTENT)

    示例:$conn = new PDO("mysql:host=localhost;dbname=myDB", $user, $pass, [ PDO::ATTR_PERSISTENT => true]);

  5. 现代PHP实践

    使用预处理语句防止SQL注入

    考虑使用ORM(如Eloquent、Doctrine)简化数据库操作

常见问题解决:
  1. 连接失败排查

    检查MySQL服务是否运行:sudo systemctl status mysql

    验证用户权限:GRANT ALL PRIVILEGES ON myDB.* TO 'root'@'localhost' IDENTIFIED BY 'password';FLUSH PRIVILEGES;

  2. 中文乱码处理

    确保数据库、表、连接都使用utf8mb4字符集

    检查HTML页面是否声明了UTF-8编码:<meta charset="UTF-8">

以上代码示例可根据实际数据库类型(MySQL、PostgreSQL等)和PHP版本进行调整,核心连接逻辑保持一致。