Wamp,MYSQL和ON DUPLICATE KEY UPDATE不影响正确的行数?

时间:2012-06-17 22:24:22

标签: php mysql wamp

我有一个成功运行的mysql ON DUPLICATE KEY UPDATE语句。

虽然在手册中它说插入的行是受影响的行是1而更新的行是2.我想我可以通过简单地计算插入行的数量;

$i = count($insert); // the insert array
// execute the query here
$inserted = ($i * 2) - $q -> rowCount();

等于$inserted的等式返回插入的行数(根据mysql)。

虽然在我的笔记本电脑上运行wamp,但只插入重复值时,我的行数为0!为什么会这样?

由于

1 个答案:

答案 0 :(得分:2)

rowCount()函数只返回1或2,表示更新或插入。使用ON DUPLICATE KEY UPDATE表示如果进行多次插入/更新,则放弃了解受影响的行数。

在您的实例中,可能是您的行计数为0,因为如果您使用相同的值进行更新,则返回值为0(即无更改)。 comment on the PHP manual建议您可以将PDO属性PDO::MYSQL_ATTR_FOUND_ROWS添加到true,以获取更新查询实际找到/匹配的行数。

E.g。

$p = new PDO($dsn, $u, $p, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));