我有一条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!为什么会这样呢?
谢谢
发布于 2012-06-18 10:23:52
rowCount()函数只返回1或2,表示update或insert。使用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));https://stackoverflow.com/questions/11075275
复制相似问题