php使用PDO下exec()函数查询执行后受影响行数的方法

使用PDO下的exec()函数可以执行一些不需要准备的SQL语句(如INSERT、DELETE、UPDATE等),并且该函数的返回值一般是受影响的记录数。但是,如果在执行INSERT语句时没有在SQL语句中添加RETURNING子句,那么直接执行exec()函数返回的受影响行数可能是0,这显然不符合预期。因此,需要使用其他方法来获取准确的受影响行数。

以下是使用PDO下exec()函数查询执行后受影响行数的具体方法:

  1. 使用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();//回滚事务
}
  1. 使用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技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 利用Angularjs和Bootstrap前端开发案例实战

    为了更好的说明“利用Angularjs和Bootstrap前端开发案例实战”的完整攻略,我准备将其分为以下三个部分来详细讲解: 环境搭建 AngularJS和Bootstrap的常用操作及使用方法 国内外常见的案例实战示例说明 一. 环境搭建 为了进行该项目的开发,我们需要搭建一个包含AngularJS和Bootstrap的环境。这里我们可以使用一些主流的开…

    database 2023年5月21日
    00
  • 详解GaussDB(DWS) explain分布式执行计划的示例

    首先需要了解GaussDB(DWS)是什么,它是一个分布式数据库系统,支持海量数据存储和高性能的OLAP业务处理。而explain分布式执行计划则是GaussDB(DWS)中的一个关键功能,它可以帮助用户更好地了解和优化查询执行计划。 下面是一个详细的攻略,来帮助大家了解如何使用explain分布式执行计划来分析查询执行计划。 1. 确认数据库版本和参数设置…

    database 2023年5月19日
    00
  • 如何保证缓存(redis)与数据库(MySQL)的一致性

    Redis是什么 首先要明白redis是一个数据库,redis是一个内存数据库(后端调用的,缓解sql数据库压力的,像双十一直接大量查询进入数据库,数据库会直接崩溃,所以在数据库前面先拦一下,先在缓存里查询,缓解压力), 所有数据基本上都存在于内存当中, 会定时以追加或者快照的方式刷新到硬盘中. 由于redis是一个内存数据库, 所以读取写入的速度是非常快的…

    Redis 2023年4月12日
    00
  • MySQL索引优化之不适合构建索引及索引失效的几种情况详解

    MySQL索引优化是提高MySQL查询效率的重要手段之一。然而,在实际应用中,我们会遇到不适合构建索引、索引失效等问题,从而造成查询效率的下降。本文将针对这些问题进行详细讲解。 一、不适合构建索引的情况 1.1 数据量太小 当表中的数据行数过少时,构建索引的意义不大,反而会增加查询开销。因此,在数据量较少的情况下,我们不建议构建索引。一般认为,数据量超过10…

    database 2023年5月22日
    00
  • rails常用数据库查询操作、方法浅析

    以下是关于 “Rails 常用数据库查询操作、方法浅析” 的完整攻略。 为什么需要数据库查询操作 在 Web 应用中,很多业务需要与数据库进行交互,从而读写数据。而一个完整的 Web 应用通常需要处理大量的数据。如果不合理地操作数据库,势必会影响应用性能。因此了解数据库查询操作及其方法可以帮助我们更好地进行数据库管理,提高应用的效率。 常用的数据库查询操作 …

    database 2023年5月21日
    00
  • 手把手教你用SQL获取年、月、周几、日、时

    手把手教你用SQL获取年、月、周几、日、时的完整攻略如下: 1. 获取年月日 获取当前时间的年月日非常简单,使用 SQL 的内置函数 YEAR()、MONTH()、DAY() 即可。例如: SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()); NOW() 函数可以返回当前时间; YEAR()、MONTH()、DAY() …

    database 2023年5月22日
    00
  • C#操作MySql的方法是什么

    这篇文章主要讲解了“C#操作MySql的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#操作MySql的方法是什么”吧! 代码介绍 功能包含: 创建数据库 创建数据表 批量添加数据 MySql事务执行 清表 分页、模糊查询 代码实现 创建数据库 public void CreateDatabase…

    MySQL 2023年4月11日
    00
  • MySQL由浅入深探究存储过程

    MySQL由浅入深探究存储过程攻略 什么是存储过程 存储过程是一种预编译的语句集合,可以被保存在数据库中并作为一个单元被调用。它可以接收参数并返回结果,是一种封装复杂操作的有效手段。存储过程可以提高数据库性能,优化应用程序的逻辑结构。 创建存储过程 创建存储过程可以使用CREATE PROCEDURE语句。 CREATE PROCEDURE procedur…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部