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

标签 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!为什么会这样?

谢谢

最佳答案

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/

相关文章:

php - 我的 php 变量导致 mailchimp api 错误

Wamp 无法启动/橙色图标

php - 如何格式化带有前导零和千位逗号的数字?

javascript - AJAX 调用系列

mysql - 连接和计算问题

sql - MySQL 查询 - 根据两个因素加入数据,然后自定义数据根据值排序的方式

iis - 无法使用 WAMP ,端口 80 由 IIS 7.5 使用

php - WordPress WP_DEBUG 不显示错误

php - Laravel:在哪里抛出 HTTP 异常

javascript - 从 SQL 数据库填充 HTML Div(项目)