使用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优化之表结构优化的5大建议(数据类型选择讲的很好) 2024-01-03
- win2008 r2 服务器安全设置之安全狗设置图文教程 2024-01-01
- 织梦DEDECMS建立模型、简单分表、索引优化操作方法 2023-12-29
- 详解mysql数据去重的三种方式 2023-12-30
- MySQL数据库数据视图 2022-09-12
- Oracle数据库如何获取当前自然周,当前周的起始和结束日期 2023-07-23
- 一文带你了解Redis怎么启动以及使用 2023-07-13
- Python 中将秒转换为小时、分钟和秒的示例代码 2023-07-27
- 10个MySQL性能调优的方法 2024-01-02
- MySQL实现批量插入测试数据的方式总结 2023-08-12