MySQL在上次更新查询期间获取找到的行数(不一定受影响)

时间:2017-03-06 08:59:37

标签: php mysql pdo

我想识别没有更新任何内容的UPDATE查询,因为没有要更新的匹配行(而不是因为该行包含完全相同的值)

AFAIK rowCounts将返回上次查询期间受影响的行数,并且我希望获得找到的匹配行数。我已经注意到MySQL工作台显示了这一点,所以我猜测那里有一种方法但却无法找到它。

我正在使用PDO。

2 个答案:

答案 0 :(得分:1)

此信息为not available in PDO

虽然本机mysql应用程序可以从驱动程序获取此类信息(请参阅mysqli_info()),但在PDO中此类信息不可用。

您所能做的就是将PDO::MYSQL_ATTR_FOUND_ROWS设置为连接选项,但它远非可靠,因为在这种情况下您将无法获得实际更新的行数。

因此,为了得到你的号码,我只需运行具有相同条件的SELECT查询。

答案 1 :(得分:0)

当您通过PDO连接到MySQL服务器时,可以使用PDO::MYSQL_ATTR_FOUND_ROWS选项来获取返回的匹配记录数,而不是更新语句更改的记录数:

$db = new PDO('mysql:dbname=yourdb;host=yourhosthost', 'username', 'psw', array(
    PDO::MYSQL_ATTR_FOUND_ROWS => true
));