Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在MySql中执行多个语句时获取所有受影响行的计数_Php_Mysql_Sql_Pdo - Fatal编程技术网

Php 在MySql中执行多个语句时获取所有受影响行的计数

Php 在MySql中执行多个语句时获取所有受影响行的计数,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,在MySql中,当同时执行多个查询时,如何获得所有受影响行的计数 我现在是这样做的: $stmt = ' update prodb set buyer = buyer+1 where userId = 1; update prodb set seller = seller+1 where userId = 2; '; $update = $dbc->prepare($stmt); $update->execute(); $queryCount = $update-&

在MySql中,当同时执行多个查询时,如何获得所有受影响行的计数

我现在是这样做的:

$stmt = '
   update prodb set buyer = buyer+1 where userId = 1;
   update prodb set seller = seller+1 where userId = 2;
';

$update = $dbc->prepare($stmt);

$update->execute();

$queryCount = $update->rowCount();

echo 'This is QueryCount '.$queryCount;
但是,即使有2行受到影响,我只得到
$queryCount
作为
1
。是否有方法将查询计数获取为
2
。i、 第一个语句的计数,第二个语句的计数?我可以确认这里有两行受到影响

我正在使用MySql PDO完成所有这些操作。

说:

执行多语句字符串可以生成多个结果集或行计数指示符。处理这些结果的方法与处理单个语句的方法不同:处理第一个语句的结果后,需要检查是否存在更多结果,如果存在,则依次处理。为了支持多结果处理,C API包括
mysql\u more\u results()
mysql\u next\u result()
函数

通过PDO实现这一点的方法是调用函数

这里有一个例子。我运行了一个多重查询,在第一个查询中插入一行,在第二个查询中插入两行

$sql = "insert into foo () values () ; insert into bar () values (), ()";

$stmt = $dbh->prepare($sql);
$stmt->execute();

do {
    echo "row count: ".$stmt->rowCount()."\n";
} while ($stmt->nextRowset());
输出:

row count: 1
row count: 2

你不能
rowCount()
仅获取上次执行的查询的结果。如果执行两个查询,则最后一个完成的查询将是rowCount()报告的查询。rowCount()本质上只是调用
mysql\u impacted\u rows()
api函数。有人说了一些关于推进光标的事情。。。你知道那是什么吗?你没有用光标。它们只在存储过程中可用。假设我只需要
2
而不需要
do{}while
这件事?这可能吗?当然,只需调用rowCount(),然后调用nextRowset(),然后再次调用rowCount()。