2011-06-13 83 views
1
UPDATE userpostratings SET rating = $rating WHERE postID = 8 

如果在用户帖子中不存在用postpos = 8的行,我想要插入。难道这与SQL完成,或者我应该做它在PHP如果行不存在,则插入而不是更新

感谢

托梅克

+0

可能重复:http://stackoverflow.com/questions/913841/mysql-conditional-insert的 – 2011-06-13 19:53:05

+0

可能重复[如何更新,如果存在,插入如果不是(又名更新插入或合并)在MySQL?](http://stackoverflow.com/questions/1218905/how-do-i-update-if-exists-insert-if-not-aka-upsert-or-merge-in-mysql) – 2011-06-13 19:57:43

回答

2

如果您有帖子ID一个唯一索引,那么你可以这样做:

INSERT INTO userpostratings (rating, postID) VALUES ($rating, 8) 
    ON DUPLICATE KEY UPDATE rating = $rating; 
+0

你需要独特的索引,而mysql_affected_rows()不。 – Grumpy 2011-06-13 20:11:09

+0

诚然,它需要一个独特的索引。这就是为什么我写“如果你有一个唯一的索引...”。我可以认为这是你的报复downvote? – 2011-06-13 20:23:10

-1

在这里你去

http://nl2.php.net/manual/en/function.mysql-affected-rows.php

> mysql_query("UPDATE mytable SET used=1 
> WHERE id < 10"); printf ("Updated 
> records: %d\n", 
> mysql_affected_rows()); 
+0

这不会像OP询问的那样。 – 2011-06-13 20:05:09

+0

ow ..是这样吗?如果mysql_affected_rows()== 0,然后插入 – Grumpy 2011-06-13 20:08:04

+0

你没有解释。另外,这需要两个陈述,一个人会做。 – 2011-06-13 20:27:08

相关问题