在mysql和php中使用insert重复更新时如何知道上次操作是插入还是更新?

Kim*_*cks 5 php mysql insert-update

我正在使用PHP和MySQL.

如果我使用INSERT ON DUPLICATE UPDATESQL语句,那么如何知道上一次操作是否是成功插入而不是更新或不成功插入?

假设是有问题的表没有使用自动增量,所以我不能用一个mysql_insert_id来帮助我找出答案.

Cah*_*sse 8

您需要检查mysql_affected_rows(),它将在插入时返回1,在更新时返回2.根据mysql文档.

if (mysql_affected_rows() == 1) //INSERT
elseif (mysql_affected_row() == 2) //UPDATE
Run Code Online (Sandbox Code Playgroud)

除非更新没有改变任何内容,否则它将返回0.

  • 它在http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html上有记录,如果ON DUPLICATE KEY UPDATE,如果将行插入为一行,则每行的受影响行值为1新行和2如果更新现有行. (3认同)