我正在为我的网站设计一个“朋友”系统。我在我的数据库中有一个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