另一种方式';插入';如果不存在


Another way to 'INSERT INTO' if not exist

我做了一些东西,我想知道是否有其他方法可以完成

$this = $CURUSER["id"];
mysql_query("UPDATE wuploaders SET uploads=uploads+1 WHERE userid=$this") or die(mysql_error());         
if (mysql_affected_rows() == 0)
    mysql_query("INSERT INTO wuploaders (userid, uploads) VALUES ('$this','1')") or die(mysql_error()); 

祝你一切顺利,Zamfir

INSERT INTO wuploaders (userid, uploads) VALUES ('$this','1') 
ON DUPLICATE KEY UPDATE uploads = uploads+1

如果userid是唯一/主键

,它就会工作

如果您已经有上传计数,也可以使用REPLACE。

REPLACE INTO wuploaders (userid, uploads) VALUES ($userid, $count);

@a1ex07的解决方案无论哪种方式都可能是好的:)

除了其他人提到的INSERT..ON DUPLICATE KEY UPDATE语法外,有时还可以使用REPLACE。它基本上是行的DELETE,然后是新值的INSERT。

这有一些副作用,比如同时触发删除和插入触发器。它还受到引用完整性约束,因此,如果有任何子行引用要替换的行,REPLACE将失败,或者删除将级联并删除子行。

有时REPLACE仍然很方便,但要记住这些问题。