MySQLi 与 PDO:PHP 中的 MySQL 访问
在 PHP 中,MySQLi 和 PDO 是连接和操作 MySQL 数据库的两种常用扩展。它们都提供了对 MySQL 的访问,但各有优缺点。
MySQLi
MySQLi 是 MySQL 的改进接口,提供了面向对象和过程式的 API。它比旧的 mysql_* 函数更快速、更稳定。
PDO (PHP 数据对象)
PDO 是一个抽象数据库接口,支持广泛的数据库,包括 MySQL、PostgreSQL、Oracle 和 SQL Server。它提供了一致的 API 来访问不同数据库。
区别
特征 | MySQLi | PDO |
面向对象 | 是 | 是 |
错误处理 | 异常 | 异常 |
预处理语句 | 支持 | 支持 |
数据库支持 | 仅 MySQL | 多个数据库 |
性能 | 一般 | 更快 |
兼容性 | PHP 5.0 以上 | PHP 5.1 以上 |
实战案例
使用 MySQLi 连接到 MySQL 数据库:
// 创建 MySQLi 连接 $mysqli = new mysqli("localhost", "username", "password", "database"); // 检查连接错误 if ($mysqli->connect_error) { die("连接失败: " . $mysqli->connect_error); } // 执行查询 $result = $mysqli->query("SELECT * FROM table"); // 循环查询结果 while ($row = $result->fetch_assoc()) { echo $row['column']; } // 关闭连接 $mysqli->close();
使用 PDO 连接到 MySQL 数据库:
// 创建 PDO 连接 $dsn = 'mysql:host=localhost;dbname=database'; $user = 'username'; $password = 'password'; try { $pdo = new PDO($dsn, $user, $password); } catch (PDOException $e) { die("连接失败: " . $e->getMessage()); } // 预处理查询 $stmt = $pdo->prepare("SELECT * FROM table"); // 执行查询 $stmt->execute(); // 循环查询结果 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $row['column']; } // 关闭连接 $pdo = null;
结论
MySQLi 和 PDO 都提供了访问 MySQL 数据库的方法。MySQLi 适用于仅需要与 MySQL 交互的情况,而 PDO 更适合与多个数据库一起使用。对于性能至关重要的应用程序,PDO 是更好的选择。