Php 在MySql中执行多个语句时获取所有受影响行的计数
在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-&
$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()。