如何使用 PHP 连接 MySQL 数据库?

嚴華  论坛元老 | 2025-4-17 06:22:26 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1724|帖子 1724|积分 5172

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下是使用PHP连接MySQL数据库的详细指南,涵盖多种方法、错误处置处罚及最佳实践,供不同需求的开发者参考:
一、连接MySQL的常见方法

PHP支持多种方式连接MySQL数据库,重要推荐使用 MySQLi扩展(面向MySQL优化)和 PDO扩展(支持多数据库)。以下分别介绍具体实现:
1. 使用MySQLi扩展

MySQLi支持面向过程和面向对象两种编程风格,且兼容MySQL最新特性(如预处置处罚语句)。
1.1 面向过程方式

  1. <?php
  2. $servername = "localhost";  // 数据库服务器地址
  3. $username = "root";        // 数据库用户名
  4. $password = "";            // 数据库密码
  5. $dbname = "test";          // 数据库名称
  6. // 创建连接
  7. $conn = mysqli_connect($servername, $username, $password, $dbname);
  8. // 检查连接状态
  9. if (!$conn) {
  10.     die("连接失败: " . mysqli_connect_error()); // 输出错误信息并终止脚本
  11. }
  12. echo "连接成功";
  13. // 关闭连接(可选,脚本结束会自动关闭)
  14. mysqli_close($conn);
  15. ?>
复制代码
关键点


  • mysqli_connect() 参数依次为服务器地点、用户名、暗码、数据库名(可选)。
  • mysqli_connect_error() 返回详细的连接错误信息。
1.2 面向对象方式

  1. <?php
  2. $servername = "localhost";
  3. $username = "root";
  4. $password = "";
  5. $dbname = "test";
  6. // 创建连接对象
  7. $conn = new mysqli($servername, $username, $password, $dbname);
  8. // 检查连接状态
  9. if ($conn->connect_error) {
  10.     die("连接失败: " . $conn->connect_error);
  11. }
  12. echo "连接成功";
  13. // 关闭连接
  14. $conn->close();
  15. ?>
复制代码
优势


  • 更符合现代面向对象编程习惯。
  • 支持事务处置处罚、预处置处罚等高级功能。
2. 使用PDO扩展

PDO(PHP Data Objects)提供同一的接口支持多种数据库(如MySQL、PostgreSQL),适合需要跨数据库兼容性的项目。
  1. <?php
  2. $servername = "localhost";
  3. $username = "root";
  4. $password = "";
  5. $dbname = "test";
  6. try {
  7.     // 创建PDO实例
  8.     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  9.    
  10.     // 设置错误模式为异常捕获
  11.     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  12.     echo "连接成功";
  13. } catch(PDOException $e) {
  14.     echo "连接失败: " . $e->getMessage(); // 捕获并输出异常信息
  15. }
  16. // 关闭连接(置为null即可)
  17. $conn = null;
  18. ?>
复制代码
关键点


  • 连接字符串格式:mysql:host=主机名;dbname=数据库名。
  • setAttribute() 设置错误处置处罚模式,推荐使用异常机制提高代码健壮性。
二、错误处置处罚与调试

连接失败大概由多种原因引起,需针对性处置处罚:
1. 常见错误原因



  • MySQL服务未启动
  • 用户名/暗码错误
  • 权限不敷(如长途连接未授权)
  • PHP未启用MySQL扩展
2. 错误捕获方法

MySQLi:通过返回值查抄或异常捕获:
  1. if (!$conn) {
  2.     die("错误代码: " . mysqli_connect_errno() . ",详细信息: " . mysqli_connect_error());
  3. }
复制代码
PDO:通过try-catch捕获异常:
  1. try {
  2.     // 连接代码
  3. } catch (PDOException $e) {
  4.     echo "错误信息: " . $e->getMessage();
  5. }
复制代码
3. 环境查抄



  • 查抄扩展是否启用:在PHP文件中运行phpinfo(),查看是否存在mysqli或pdo_mysql模块。
  • 修改php.ini:取消注释extension=mysqli和extension=pdo_mysql,重启Web服务。
三、安全与最佳实践

1:克制使用已弃用的mysql扩展
PHP 7+已移除mysql_connect(),需使用MySQLi或PDO。
2:使用预处置处罚语句防止SQL注入
示例(MySQLi预处置处罚):
  1. $stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
  2. $stmt->bind_param("s", $email);
  3. $stmt->execute();
复制代码
3:敏感信息保护
将数据库凭据存储在独立设置文件中,并设置文件权限禁止外部访问。
4:连接池与长期连接
高并发场景可使用连接池(如Swoole)或PDO长期连接(new PDO(..., [PDO::ATTR_PERSISTENT => true]))优化性能。
四、进阶利用示例

1. 执行查询(MySQLi面向对象)

  1. $sql = "SELECT id, name FROM users";
  2. $result = $conn->query($sql);
  3. if ($result->num_rows > 0) {
  4.     while($row = $result->fetch_assoc()) {
  5.         echo "ID: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
  6.     }
  7. } else {
  8.     echo "0 结果";
  9. }
复制代码
2. 事务处置处罚(PDO)

  1. try {
  2.     $conn->beginTransaction();
  3.     // 执行多条SQL
  4.     $conn->exec("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1");
  5.     $conn->exec("UPDATE accounts SET balance = balance + 100 WHERE user_id = 2");
  6.     $conn->commit();
  7. } catch (Exception $e) {
  8.     $conn->rollBack();
  9.     echo "事务失败: " . $e->getMessage();
  10. }
复制代码
五、总结

方法实用场景优势MySQLi纯MySQL项目、需使用MySQL特性高性能、支持预处置处罚和事务PDO多数据库支持、强调代码可移植性同一接口、强大的错误处置处罚机制 推荐选择


  • 新手或小型项目:从MySQLi面向过程入手,简朴直接。
  • 中大型或跨数据库项目:优先使用PDO,提拔安全性和扩展性。
通过合理选择连接方式、严酷错误处置处罚、遵循安全规范,可构建高效稳固的PHP数据库应用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表