使用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()函数查询执行后受影响行数的方法
基础教程推荐
- [Redis] redis业务实践 , 这次用哈希 2024-04-24
- PostgreSQL limit的神奇作用详解 2023-07-21
- 如何查看PostgreSQL数据库中所有表 2023-07-21
- mysql语法中有哪些可以删除日志的命令 2024-12-16
- PHP 分页类(模仿google)-面试题目解答 2024-02-14
- 一文快速回顾 Java 操作数据库的方式-JDBC 2024-04-24
- CAT分布式实时监控系统使用详解 2024-02-14
- docker 安装redis以及删除 2023-09-13
- DB2优化(简易版) 2024-01-01
- 具有负载均衡功能的MySQL服务器集群部署及实现 2023-12-29
