我在製作聊天室IM。
如果用戶關閉窗口,我想要更新表格,這意味着他查看了他的朋友發給他的消息。
發生這種情況時,每個對話都有一個唯一的ID,因此我找到具有該ID的消息並將查看的列設置爲與用戶名相同。Mysql如果問題
但是,如果其他用戶也關閉了窗口,我希望將所有消息的查看列更改爲'both',以便任何用戶都不會彈出這些消息。 (默認情況下,所查看的列等於0)。
我想要的是一個查詢,只需找到convo_id
的所有消息,並且如果該消息已被其他用戶查看,意味着viewed!=0
那麼它被設置爲其他兩個設置爲關閉該方框的用戶。
我有一個查詢,但它不起作用,因爲我沒有完全得到正確的語法。
只是想知道是否有人能改正它或提出一些建議。
$sql = "UPDATE chatbox IF (viewed!=?) THEN
SET viewed=? WHERE convo_id=?
ELSE
SET viewed=? WHERE convo_id=?";
$stmt18 = $conn->prepare($sql);
$result = $stmt18->execute(array(0,$receiver,$convo_id,'both',$convo_id));
爲什麼不直接產生在PHP代碼中兩個不同的UPDATE語句? – 2011-05-26 19:39:14
您使用的是什麼味道的SQL? – 2011-05-26 19:39:56
@AJ:大概是因爲它總是會執行兩條SQL語句。一個fo找出哪一個運行,一個運行它。這也是一種競爭條件。 – 2011-05-26 19:40:12