2011-06-13 89 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

相關問題