如何在 PHP 中查找查询“INSERT ... ON DUPLICATE KEY UPDATE...”的哪一部分成功了吗?
我有一个没有 AUTO_INCRMENT 字段的 MySQL 表。在 PHP 中,我运行这个简单的查询:
mysql_query("INSERT INTO table ... ON DUPLICATE KEY UPDATE ....");
我需要能够检测是否将新行插入到表中或者是否更新了旧行?有可能吗?
I have MySQL table that doesn't have AUTO_INCREMENT field. In PHP I run this simple query:
mysql_query("INSERT INTO table ... ON DUPLICATE KEY UPDATE ....");
I need to be able to detect if a new row was inserted into table or if an old row was updated ? Is it possible somehow ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
mysql_affected_rows() 在插入时返回 1(因为它插入了一行),在更新时返回 2(因为它首先尝试插入,然后更新,或类似的情况)。
那是当您只是尝试添加一行时。您也可以在多行插入上使用
ON DUPLICATE KEY UPDATE
子句,然后您将获得所有行的 1 和 2 的总和。mysql_affected_rows()
returns 1 on an insert (because it inserted one row) and 2 on an update (because first it tried to insert, and then it updated, or something like that).That is when you're just trying to add one row. You can have the
ON DUPLICATE KEY UPDATE
clause on multi-row inserts too, and then you'll get the sum of 1's and 2's for all the rows.