使用PDO下的exec()函数可以执行一些不需要准备的SQL语句(如INSERT、DELETE、UPDATE等),并且该函数的返回值一般是受影响的记录数。但是,如果在执行INSERT语句时没有在SQL语句中添加RETURNING子句,那么直接执行exec()函数返回的受影响行数可能是0,这显然不符合预期。因此,需要使用其他方法来获取准确的受影响行数。
以下是使用PDO下exec()函数查询执行后受影响行数的具体方法:
- 使用PDO的commit()方法返回受影响行数
在PDO中,exec()函数执行的语句是没有被包装在事务中的,如果要使用该方法返回受影响行数,需要先调用PDO的beginTransaction()方法开启事务,然后提交事务并获取返回值。代码示例:
try {
$pdo = new PDO("mysql:host=127.0.0.1;dbname=test;charset=utf8","root","");
$pdo->beginTransaction();//开启事务
$rowCount = $pdo->exec("INSERT INTO `users` (`name`, `age`) VALUES ('Tom', 18)");
$pdo->commit();//提交事务
echo '受影响行数为:'.$rowCount;
} catch (PDOException $e) {
echo '执行失败:'.$e->getMessage();
$pdo->rollBack();//回滚事务
}
- 使用INSERT、DELETE、UPDATE等语句的返回值
在使用PDO执行SQL语句时,INSERT、DELETE、UPDATE等语句的返回值一般都是受影响的记录数,可以将该返回值作为受影响行数。代码示例:
try {
$pdo = new PDO("mysql:host=127.0.0.1;dbname=test;charset=utf8","root","");
$rowCount = $pdo->exec("INSERT INTO `users` (`name`, `age`) VALUES ('Mary', 25)");
echo '受影响行数为:'.$rowCount;
} catch (PDOException $e) {
echo '执行失败:'.$e->getMessage();
}
总的来说,使用PDO下的exec()函数查询执行后受影响行数的方法可以根据不同情况选择相应的方式,通常可以直接使用INSERT、DELETE、UPDATE等语句的返回值作为受影响行数来使用。
本文标题为:php使用PDO下exec()函数查询执行后受影响行数的方法


基础教程推荐
- 利用Python实现生成颜色表(color chart) 2023-07-28
- PostgreSQL生成列实现过程介绍 2023-07-21
- 分享很少见很有用的SQL功能CORRESPONDING 2022-08-31
- MySQL参数调优实例探究讲解 2023-12-17
- Python 3.x基础实战检查磁盘可用空间 2023-07-28
- Exchange在接收连接器上启用匿名中继的方法 2023-07-24
- Pycharm运行程序时,控制台输出PyDev console:starting问题 2023-07-27
- 解读数据库的嵌套查询的性能问题 2023-12-16
- Redis数据类型 随笔 2023-09-13
- centos7中redis安装 2023-09-12