php中PDO库是什么

PDO是PHP中用于统一访问多种数据库的抽象层,通过更换DSN即可切换数据库,无需重写操作语句;支持预处理防止SQL注入,推荐设置ERRMODE_EXCEPTION模式便于错误捕获,结合try-catch使用更安全稳定。

PDO(PHP Data Objects)是 PHP 中用于访问数据库的一个轻量级、一致性的接口。它不是一种数据库驱动,而是一个数据访问抽象层,允许你使用统一的方式与多种数据库进行交互,比如 MySQL、PostgreSQL、SQLite、Oracle 等。

支持多种数据库

使用 PDO,你可以通过切换数据源名称(DSN)连接不同的数据库,而无需重写大量代码。只要更换连接参数,大部分操作语句可以保持不变。

  • MySQL:使用 mysql:host=localhost;dbname=test
  • SQLite:使用 sqlite:/path/to/database.db
  • PostgreSQL:使用 pgsql:host=localhost;dbname=test

安全性更高

PDO 支持预处理语句(Prepared Statements),能有效防止 SQL 注入攻击。通过将 SQL 模板与用户数据分离,确保输入被正确转义。

例如:

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);
$user = $stmt->fetch();

错误处理机制完善

PDO 提供了多种错误处理模式,可通过设置属性来控制异常行为:

  • PDO::ERRMODE_SILENT:静默模式,需手动检查错误
  • PDO::ERRMODE_WARNING:发出警告但不中断执行
  • PDO::ERRMODE_EXCEPTION:抛出异常,便于用 try-catch 捕获

推荐使用异常模式,便于调试和维护。

使用简单且功能强大

连接数据库后,可使用 execute、query、fetch 等方法执行操作,支持事务处理、获取影响行数、获取最后插入 ID 等常用功能。

基本用法示例:

try {
    $pdo = new PDO("mysql:host=localhost;dbname=test", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->query("SELECT name FROM users");
while ($row = $stmt->fetch()) {
    echo $row['name'] . "\n";
}

} catch (PDOException $e) { echo "数据库错误:" . $e->getMessage(); }

基本上就这些。PDO 让 PHP 操作数据库更安全、更灵活,是现代 PHP 开发中推荐使用的数据库访问方式。不复杂但容易忽略的是配置好错误模式和始终使用预处理语句。