我有一个正在成功运行的 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!为什么会这样?
谢谢
最佳答案
rowCount()
函数将仅返回 1 或 2,表示更新或插入。使用ON DUPLICATE KEY UPDATE
意味着您不知道在执行多次插入/更新时有多少行受到影响。
在您的实例中,您的行计数可能为 0,因为如果您使用相同的值进行更新,则返回值为 0(即没有更改)。一个comment on the PHP manual建议您可以将 PDO 属性 PDO::MYSQL_ATTR_FOUND_ROWS
添加为 true 以获取更新查询实际找到/匹配的行数。
例如
$p = new PDO($dsn, $u, $p, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));
关于php - Wamp、MYSQL 和 ON DUPLICATE KEY UPDATE 不影响正确的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11075275/