使用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()函数查询执行后受影响行数的方法


- 浅谈MySQL索引优化分析 2023-12-22
- 优化 SQL Server 索引的小技巧 2023-12-22
- 【Redis】安装PHP的redis驱动(二) 2023-09-12
- mysql Key_buffer_size参数的优化设置 2023-12-19
- redis 数据库 2023-09-13
- MySQL多表链接查询核心优化 2023-12-20
- MySQL 中常见的几种高可用架构部署方案解析 2023-07-26
- MySql如何去除字符串前缀,两边,后缀 2022-10-23
- PostgreSQL使用MySQL作为外部表(mysql_fdw) 2023-07-21
- windows安装mongodb6.x并设置用户名密码的详细过程 2023-07-16