在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
。即第一个陈述的数量,以及第二个陈述的数量?我可以确认这里有两行受影响。
我正在使用MySql PDO完成所有这些。
答案 0 :(得分:2)
https://dev.mysql.com/doc/refman/5.6/en/c-api-multiple-queries.html说:
执行多语句字符串可以生成多个结果集或行计数指示符。处理这些结果涉及与单语句情况不同的方法:在处理第一个语句的结果后,有必要检查是否存在更多结果并依次处理它们。为了支持多结果处理,C API包括
mysql_more_results()
和mysql_next_result()
函数。
通过PDO执行此操作的方法是调用PDOStatement::nextRowset()函数。
这是一个例子。我运行一个多查询,其中我在第一个查询中插入一行,在第二个查询中插入两行。
$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