如果不存在,则“插入INTO”的另一种方法

时间:2011-06-20 14:52:10

标签: php mysql insert

我做了一些事情,我想知道是否有另一种方法可以做到这一点

$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()); 

一切顺利, 扎姆菲尔

3 个答案:

答案 0 :(得分:8)

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

如果userid是唯一/主键

,它将起作用

答案 1 :(得分:0)

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

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

@ a1ex07的解决方案可能是好的方式:)

答案 2 :(得分:0)

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

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

有时候REPLACE很方便,但请记住这些问题。