PHP / mySQL ON DUPLICATE KEY UPDATE - 是否发生INSERT或UPDATE?

时间:2011-11-02 18:03:06

标签: php mysql

我使用ON DUPLICATE KEY UPDATE进行mySQL查询,我从PHP脚本运行。我想测试是UPDATE还是INSERT。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

来自MySQL documentation

“使用ON DUPLICATE KEY UPDATE,如果将行作为新行插入,则每行的受影响行值为1;如果更新现有行,则每行受影响的行值为2.”

您可以使用mysql_affected_rows()来确定受影响的行数。

答案 1 :(得分:1)

我不得不弄清楚这一次,所以我指的是关于此事的笔记。

以下查询:

INSERT INTO table ... ON DUPLICATE KEY UPDATE ...,  id = LAST_INSERT_ID(  id)

其中'id'是表格中的主键,您可以拨打mysqli_affected_rows(),它将返回:

  1. 0 - 行存在,没有更新
  2. 1 - 没有行,插入
  3. 2 - 行存在,更新内容