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日

相关文章

  • Python的Django框架中的select_related函数对QuerySet 查询的优化

    在Python的Django框架中,Django提供了select_related函数,可以对QuerySet查询进行优化,减少数据库查询次数,提升网站性能。接下来,我将为你详细讲解如何使用select_related函数,以及使用select_related函数的优势。 什么是select_related函数 select_related是Django框架…

    database 2023年5月22日
    00
  • C++连接mysql数据库并读取数据的具体步骤

    通过C++连接MySQL数据库并读取数据,我们需要按照以下步骤进行: 步骤一:安装MySQL C++ Connector 我们需要先从官方网站下载MySQL C++ Connector的安装包,然后根据自己的操作系统安装。 Windows:以管理员身份运行CMD,进入MySQL Connector C++ 安装文件目录,使用如下命令执行安装文件: shell…

    database 2023年5月22日
    00
  • redis启动脚本

    redis的启动方式1.直接启动  进入redis根目录,执行命令:  #加上‘&’号使redis以后台程序方式运行 1 ./redis-server &  2.通过指定配置文件启动  可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf  进入redis根目录,输入命令: 1 ./redis-server…

    Redis 2023年4月16日
    00
  • 阿里巴巴 MySQL 数据库之建表规约(一)

    建表规约 强制部分 【强制】 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint (1 表示是,0 表示否)。说明:任何字段如果为非负数,必须是 unsigned。正例:表达逻辑的字段名 is_deleted,1 表示删除,0 表示未删除。 【强制】 表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁…

    MySQL 2023年4月13日
    00
  • Java连接redis的使用示例

    Java连接redis的使用示例          Redis是开源的key-value存储工具,redis通常用来存储结构化的数据,因为redis的key可以包含String、hash、listset和sorted list。          Redisserver目前最稳定的版本是2.8.9,可以到官网http://redis.io/download下…

    Redis 2023年4月16日
    00
  • 带你了解mybatis如何实现读写分离

    如何实现MyBatis的读写分离 MyBatis是一款优秀的ORM框架,支持多种数据库,本文将介绍如何使用MyBatis实现读写分离。 读写分离是指将读和写请求分流到不同的数据库节点,以提高数据库系统的性能和可用性。将写操作集中在主数据库节点上,而读操作则分流到多个从数据库节点上处理。 下面,我们将介绍MyBatis的两种读写分离实现方法:第一种是使用MyB…

    database 2023年5月21日
    00
  • Oracle如何在SQL语句中对时间操作、运算

    在Oracle中,可以通过使用一系列的时间函数来对时间进行操作和运算。下面是一些常见的时间函数及其用法。 1. 获取当前时间 SYSDATE SYSDATE函数返回当前数据库服务器的系统日期和时间。 示例: SELECT SYSDATE FROM DUAL; 输出结果: SYSDATE ——————- 2022-09-23 15:35…

    database 2023年5月21日
    00
  • 如何使用Python在MySQL中使用分组查询?

    在MySQL中,分组查询是一种将数据分组并对每个组执行聚合函数的查询。在Python中,可以使用MySQL连接来执行分组查询。以下是在Python中分组查询的完整攻略,包分组查询的基本语法、使用分组查询的示例以及如何在Python中使用分组查询。 分组查询的基本语法 分组查询的基本语法如下: SELECT column_name(s) FROM table_…

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