Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何理解MySQL是否已更新或插入_Php_Mysql_Sql - Fatal编程技术网

Php 如何理解MySQL是否已更新或插入

Php 如何理解MySQL是否已更新或插入,php,mysql,sql,Php,Mysql,Sql,这似乎是一个如此简单的问题,但谷歌似乎找不到太多关于这个话题 出于缓存原因,我想运行一个查询,让用户喜欢: INSERT INTO tbl_review_vote (user_id,review_id,vote) VALUES(:uid,:rid,:vote) ON DUPLICATE KEY UPDATE vote=:vote 然后从服务器响应中了解是否插入或更新了like,以便我可以将likes预聚合到用户审阅记录中 有没有一种好方法可以做到这一点?对于重复键更新,如果将行作为新行插入,则

这似乎是一个如此简单的问题,但谷歌似乎找不到太多关于这个话题

出于缓存原因,我想运行一个查询,让用户喜欢:

INSERT INTO tbl_review_vote (user_id,review_id,vote) VALUES(:uid,:rid,:vote) ON DUPLICATE KEY UPDATE vote=:vote
然后从服务器响应中了解是否插入或更新了like,以便我可以将
likes
预聚合到用户审阅记录中


有没有一种好方法可以做到这一点?

对于重复键更新,如果将行作为新行插入,则每行受影响的行值为1,如果更新现有行,则每行受影响的行值为2。然后,您可以查看mysql的
LAST\u INSERT\u ID()
和API的LAST\u INSERT\u ID之间的差异,以确定它是插入还是更新


查看它是什么的另一种方法是,添加一个
update\u count
列,该列随您的查询而递增:
update\u count=update\u count+
,或者,在更新当前时间戳时不使用
时间戳

尝试以下php函数:

mysql\u受影响的\u行() 或
mysqli_impacted_rows()

Hi前面有人问:您可以查看插入的行数。您使用的是哪个MySQL API?我不知道您是否使用了任何DB类,但通常(即使是简单的
MySQL\u query()
也会这样做,例如)返回值是不同的(true/resource),因此您可以进行检查。看看你正在使用的方法的文档using@Hanky웃Panky行数不起作用,可以表示插入的行数或插入的行数updated@DamienPirsy我正在使用PDO,插入和更新之间的任何返回都是不可中断的,我可以看到这不是一个答案,而且问题清楚地表明正在使用PDO,而不是mysqli。