PHP 使用 PDO 连接与查询数据库:基础示例与类封装
本文详解 PHP 中 PDO(PHP Data Objects)连接与查询 SQL 数据库的实现方式。涵盖基础连接代码、异常处理机制以及通过继承 PDO 类进行二次开发的封装技巧,帮助开发者建立统一、安全的数据库交互方案。
PDO 简介与目标
PDO 扩展自 PHP 5 起引入,旨在提供一种轻量级、清晰且统一的 API,以解决不同关系型数据库(RDBMS)连接接口不统一的问题。PDO 的设计目标包括:
- 统一性:不同数据库使用相同的方法名访问,便于切换数据库后端。
- 高性能:基于 PHP 5 特性重新设计,优化执行效率。
- 运行时可扩展:支持模块化加载驱动程序(如 pdo_mysql, pdo_pgsql),无需重新编译 PHP。
- 易用性:API 设计直观,明确每个函数调用的作用。
基础操作:连接与查询
要实现数据库连接,首先需要构建数据源名称(DSN),包含数据库类型、主机地址和数据库名。以下是基础的连接与查询示例。
第1步:定义连接参数
准备数据库账号、密码及连接信息。注意在实际环境中,应避免硬编码敏感信息。
$login = "root";
$passwd = "mysql";
第2步:建立连接并执行查询
使用 try-catch 结构包裹 PDO 实例化代码,以捕获潜在的连接错误。成功连接后,通过 query() 方法执行 SQL 语句并遍历结果集。
$db = new PDO('mysql:host=localhost;dbname=mysql', $login, $passwd);
foreach($db->query('select * from test') as $row){
print_r($row);
}
$db = null; // 显式关闭连接
若连接失败,代码将捕获 PDOException 并输出错误信息。
进阶实践:封装 PDO 基类
在复杂应用中,建议封装一个继承自 PDO 的类,以统一管理连接逻辑、预处理参数或自定义属性设置。
第1步:定义类结构与初始化参数
声明数据库类型、主机、库名、用户名和密码等常量或变量,并拼接 DSN 字符串。
$dbms='mysql';
$host='localhost';
$dbname='test';
$user='root';
$pass='';
$dsn="$dbms:host=$host;dbname=$dbname";
第2步:继承 PDO 并实现构造函数
创建自定义类 db 继承自 PDO。在构造函数中调用父类构造函数进行连接,并处理异常退出。
class db extends PDO {
public function __construct(){
try {
parent::__construct($dsn, $user, $pass);
} catch (PDOException $e) {
die("error: " . $e->__toString() . "<br/>");
}
}
}
第3步:重写查询方法与自定义逻辑
可根据需求重写 query() 或其他方法。例如,添加字符处理或属性设置功能。以下示例展示了如何设置返回数组键的大小写,并执行删除操作。
$db = new db();
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
foreach ($db->query('select * from xxxx_menu') as $row) {
print_r($row);
}
$db->exec('delete from `xxxx_menu` where mid=43');
通过这种方式,可以将通用的数据库操作逻辑集中在类中,提高代码复用性和可维护性。
注意事项与排错
- 驱动安装:确保 PHP 环境已启用对应的 PDO 驱动(如
pdo_mysql),否则连接时会报错。 - 错误模式:建议在使用 PDO 时,通过
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);设置抛出异常模式,以便及时发现 SQL 错误。 - 资源释放:完成数据库操作后,将 PDO 对象置为
null有助于显式关闭连接。
总结
PDO 为 PHP 提供了标准且强大的数据库访问接口。无论是简单的脚本测试还是复杂的 Web 应用开发,掌握 PDO 的连接配置、查询技巧及类封装方法,都能显著提升数据库操作的稳定性和代码质量。以上就是 PHP 使用 PDO 连接并查询 SQL 数据库的详细内容,更多关于 PHP 数据库程序设计资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









