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

Php MySQL正在获取上次更新查询期间找到的行数(不一定受影响),php,mysql,pdo,Php,Mysql,Pdo,我想确定没有更新任何内容的更新查询,因为没有要更新的匹配行(而不是因为该行包含完全相同的值) AFAIK rowCounts将返回上次查询期间受影响的行数,我想得到找到的匹配行数。我注意到MySQL工作台显示了这一点,所以我猜有一种方法,但找不到 我正在使用PDO。此信息不可用 虽然本机mysql应用程序可以从驱动程序获取此类信息(请参阅),但在PDO中,此类信息不可用 您所能做的就是将PDO::MYSQL\u ATTR\u FOUND\u ROWS设置为一个连接选项,但这远远不够可靠,因为在这

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

AFAIK rowCounts将返回上次查询期间受影响的行数,我想得到找到的匹配行数。我注意到MySQL工作台显示了这一点,所以我猜有一种方法,但找不到

我正在使用PDO。

此信息不可用

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

您所能做的就是将
PDO::MYSQL\u ATTR\u FOUND\u ROWS
设置为一个连接选项,但这远远不够可靠,因为在这种情况下,您无法获得实际更新的行数

因此,要获取您的编号,我只需在相同条件下运行SELECT查询。

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

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

若查询并没有更新任何内容,那个么
rowCount()
返回0,不是吗?我想你在重复密钥更新中使用了
是这样吗?@u mulder AFAIK如果行保持不变,或者它一开始就不存在,它也不会更新。我试图区分这两种情况。@sand我实际上不是,只是一个普通的旧更新,但显然对此持开放态度。你能详细说明一下吗为什么PDO::MYSQL\u ATTR\u FOUND\u行不可靠?我想我是用同一句话写的