PDO概述与特点
PDO(PHP Data Objects)是PHP中一个轻量级的数据库访问抽象层,它为不同的数据库系统提供统一的访问接口。PDO的主要特点包括:
数据库无关性:通过统一的API访问多种数据库(MySQL、PostgreSQL、SQLite等)
安全性:支持预处理语句,有效防止SQL注入攻击
灵活性:提供多种数据获取方式(关联数组、数字索引数组、对象等)
错误处理:支持多种错误处理模式(静默、警告、异常)
事务支持:提供完整的事务控制功能
主要PDO类与预定义常量
核心PDO类
PDO类:主类,用于建立数据库连接
PDOStatement类:表示预处理语句及结果集
PDOException类:PDO操作引发的异常
重要预定义常量
连接相关:
PDO::ATTR_ERRMODE:设置错误报告模式
PDO::ERRMODE_EXCEPTION:以异常形式报告错误
获取模式:
PDO::FETCH_ASSOC:返回关联数组
PDO::FETCH_OBJ:返回对象
PDO::FETCH_BOTH:返回同时包含关联和数字索引的数组
事务相关:
PDO::ATTR_AUTOCOMMIT:设置是否自动提交
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY:使用缓冲查询
PDO常见用法
1. 数据库连接
phpCopy Code$dsn = 'mysql:host=localhost;dbname=testdb';$user = 'username';$pass = 'password';$pdo = new PDO($dsn, $user, $pass);
2. 预处理语句执行
phpCopy Code$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");$stmt->execute([':id' => $user_id]);$result = $stmt->fetchAll(PDO::FETCH_ASSOC);3. 事务处理
phpCopy Code$pdo->beginTransaction();try { $pdo->exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1"); $pdo->exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2"); $pdo->commit();
} catch (Exception $e) { $pdo->rollBack();
}PDO通过提供统一的数据库访问接口,简化了PHP开发者的数据库操作,同时增强了安全性和可移植性,是现代PHP应用中数据库交互的首选方式。