我做了一些事情,我想知道是否有另一种方法可以做到这一点
$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());
一切顺利, 扎姆菲尔
答案 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很方便,但请记住这些问题。