使用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()函数查询执行后受影响行数的方法
基础教程推荐
- SQL使用复合索引实现数据库查询的优化 2023-12-12
- SQLserver存储过程写法与设置定时执行存储过程方法详解 2023-07-29
- Redis缓冲区溢出及解决方案分享 2023-07-13
- 深入了解MySQL函数:INSTR() 2023-10-08
- MySQL每天自动增加分区的实现 2022-08-31
- 使用 Python 查找本月的最后一天的方法汇总 2023-07-27
- Springboot 2.0 - 集成redis 2023-09-13
- 控制Redis的hash的field中的过期时间 2023-07-12
- Redis 中ZSET数据类型命令使用及对应场景总结(案例详解) 2023-07-12
- MySQL 4种导入数据的方法 2023-12-11
