0

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

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

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

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

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

谢谢

4

1 回答 1

2

rowCount()函数将只返回 1 或 2,表示更新或插入。如果您进行多次插入/更新,使用这种ON DUPLICATE KEY UPDATE方法您会放弃知道有多少行受到影响。

在您的实例中,您的行数可能为 0,因为如果您使用相同的值进行更新,则返回值为 0(即没有变化)。对 PHP 手册的评论建议您可以将 PDO 属性添加PDO::MYSQL_ATTR_FOUND_ROWS到 true 以获取更新查询实际找到/匹配的行数。

例如

$p = new PDO($dsn, $u, $p, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));
于 2012-06-18T02:23:52.187 回答