PHP PDO 使用详解

操作数据库是 PHP 常常用到的功能,使用 PDO 处理数据库操作在通用性和安全性上都很不错。在此我总结一下 PDO 的使用方法,PDO 安全性方面的问题可以参考 PDO防注入原理分析以及使用PDO的注意事项总结

1. 连接数据库

PDO 连接数据只需 new 一个 PDO 对象并传入相关配置,包括数据库驱动,主机,端口,数据库名,链接帐号和密码等。若连接失败会抛出 PDOException。

try {
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'account', 'password');
} catch (PDOException $e) {
echo $e->getMessage();
}

2. 查询

使用 query 方法来执行查询语句,该方法返回一个 PDOStatement 对象,可以遍历该对象获得查询结果也可以用该对象的 fetch 或 fetchAll 方法获得查询结果。

$sta = $pdo->query('select * from table');
foreach($sta as $row) {
print_r($row);
}
$rows = $sta->fetchAll(PDO::FETCH_BOTH);
foreach($rows as $row) {
print_r($row);
}
print_r($sta->fetch(PDO::FETCH_BOTH, 0));

3. 增删改

使用 exec 方法来执行增删改操作,该方法返回操作影响的行数。

要获得增加操作的自增id可以使用 lastInsertId方法。

$num = $pdo->exec('insert into table values (1)');
echo $pdo->lastInsertId();

4. 准备查询

在需要用不同参数对多次执行一个查询时,例如多次修改数据时,准备查询可以提高效率。它是将 sql 语句编译成一个模版,每次执行时只替换模版中的参数。PDO 通过 prepare方法编译一个 SQL 模版,SQL 模版中可以用 ? 表示一个参数,也可以用 :参数名 表示一个有名字的参数。

prepare返回一个 PDOStatement 对象,通过它的 bindParam 方法设置参数,使用 execute 方法执行 SQL 模版,execute 方法有一个可选的数组参数,也可以在这里用数组设置模版参数。

$sta = $pdo->prepare('select * from table where name = ?'); //准备 SQL 模版,其中 ? 代表一个参数。
$sta->execute(array('name1')); //通过数组设置参数,执行 SQL 模版
$sta->execue(array('name2')); 
print_r($sta->fetchAll());
$sta = $pdo->prepare('update table set name = 'newName' where name = :name'); //准备 SQL 模版,其中 :name 代表一个有名字的参数
$sta->execute(array(':name'=>'name1')); //通过数组设置参数,执行 SQL 模版
$sta->bindParam(':name', 'name2'); //通过bindParam设置参数
$sta->execute(); echo $sta->columnCount(); //columnCount 方法返回查询结果的行数  $sta->rowCount(); // 返回操作影响的行数

5. 错误处理

设置 PDO::ATTR_ERRORMODE 可以修改 PDO 错误处理模式。可选的模式有:

PDO::ERRORMODE_EXCEPTION 发生错误时抛出异常。

PDO::ERRORMODE_SILENCE 默认设置 发生错误时不进行任何处理。

PDO::ERRMODE_WARING 发生错误时生成一条警告消息。

同时我们可以通过 PDO 的 errorCode() 方法来获取标准 SQL 错误代码,通过 errorInfo() 方法获取错误消息。

$pdo->setAttribute(PDO::ATTR_ERRORMODE, PDO::ERRORMODE_EXCEPTION); //让 PDO 在发生错误时抛出异常
$pdo->exec('insert into table values (1)');
echo $pdo->errorCode(); //获得标准 SQL 错误码
echo $pdo->errorInfo()[2]; //获得错误信息 errorInfo 返回一个数组,0 位存 SQL 错误码;1 位存数据库驱动错误码;2 位存错误消息


以上就是我总结的 PDO 使用方法,更多细节请参考官方文档  http://php.net/manual/zh/book.pdo.php

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值