PHP/MySQL:在投票系统中,如何防止用户看到他已经投票的个人资料?
Posted
技术标签:
【中文标题】PHP/MySQL:在投票系统中,如何防止用户看到他已经投票的个人资料?【英文标题】:PHP/MySQL: In a Voting System, how can I keep a user from seeing a profile he has already voted on? 【发布时间】:2011-08-11 11:26:28 【问题描述】:一般来说,我怎样才能不让用户看到他已经投票的个人资料,这样他就不会投票两次?
我有一个用户表(称为“用户”),每个用户都有一个唯一的用户 ID(列“userID”),我有另一个表(称为“投票”),用于每个用户给另一个用户的每个投票(使用他们各自的用户 ID 和列“fromUser”、“toUser”、“vote”),所以如果我想向用户展示一个新的随机配置文件进行投票,那么排除当前用户所在的任何用户的最佳方法是什么已经投票(换句话说,排除“userID”为“toUser”且“fromUser”为当前用户的 userID 的任何“userID”)。
谢谢!
【问题讨论】:
您刚刚在散文的最后一句中描述了您的查询。将其翻译成 SQL ;) 【参考方案1】:SELECT userID FROM users
WHERE userID NOT IN (SELECT toUser FROM votes WHERE fromUser = 'theUserIdThatIsVotingNow')
ORDER BY RAND() LIMIT 1
【讨论】:
感谢 hoppa,这很有意义!您确定使用“NOT IN”和子查询是最好的方法吗? Define sure :P 我想你可以加入这两个表并做一些魔术。但是由于您想要与第二个表中的内容相反的内容,所以我最喜欢子查询。【参考方案2】:这应该可以解决问题。
SELECT *
FROM Users
WHERE userID NOT IN (SELECT toUser FROM Votes WHERE fromUser = '$current_user_userID');
【讨论】:
以上是关于PHP/MySQL:在投票系统中,如何防止用户看到他已经投票的个人资料?的主要内容,如果未能解决你的问题,请参考以下文章