我正在爲我的網站設計一個「朋友」系統。我在我的數據庫中有一個USERS表,這個表中有兩個字段叫做「friendrequestssent」和「friendrequestsreceived」。如何檢查逗號分隔字段中是否存在值?
當用戶發送好友請求給其他用戶,它存儲了USERID到其他人的「friendrequestsreceived」字段和其他人的USERID到他的「friendrequestssent」領域,都與一個尾隨逗號(即:12345,
)。
我需要檢查,看是否有要求,以防止重複請求已經存在,而且到目前爲止,我已經試過這樣:
$sql = "SELECT * FROM users WHERE userid = $userid AND $profileid IN (friendrequestssent);";
$sent = mysql_num_rows(mysql_query($sql));
$sql = "SELECT * FROM users WHERE userid = $profileid AND $userid IN (friendrequestsreceived);";
$received = mysql_num_rows(mysql_query($sql));
if(($sent > 0) && ($received > 0)) {
//do stuff here
}
這很好工作在第一,但如果用逗號隔開值存在於該字段中(即:12345,12346,
),IN語句不再查找該值,並且行數保持爲零。
據我所知,我不明白爲什麼MySQL查詢中的IN語句不會看到該值。
另一方面,我敢肯定還有更好的方法來做到這一點。我現在還不確定。請指教。
在數據庫中的CSV是邪惡的,它會直接送你到地獄。 – Johan
是不是IN()類型特定?即你不混合整數和字符串,而且你實際上是將一個整數(用戶ID)傳遞給一個字符串(csv) - 如果沒有逗號,它可能就可以評估一串數字作爲一個整數。我不是100%確定,因爲我從來沒有在數據庫中使用CSV - 他們只是尖叫着「這應該是一個鏈接表」給我... – CD001