【问题标题】:PHP/MySQL: In a Voting System, how can I keep a user from seeing a profile he has already voted on?PHP/MySQL:在投票系统中,如何防止用户看到他已经投票的个人资料?
【发布时间】:2011-08-11 11:26:28
【问题描述】:

一般来说,我怎样才能不让用户看到他已经投票的个人资料,这样他就不会投票两次?

我有一个用户表(称为“用户”),每个用户都有一个唯一的用户 ID(列“userID”),我有另一个表(称为“投票”),用于每个用户给另一个用户的每个投票(使用他们各自的用户 ID 和列“fromUser”、“toUser”、“vote”),所以如果我想向用户展示一个新的随机配置文件进行投票,那么排除当前用户所在的任何用户的最佳方法是什么已经投票(换句话说,排除“userID”为“toUser”且“fromUser”为当前用户的 userID 的任何“userID”)。

谢谢!

【问题讨论】:

  • 您刚刚在散文的最后一句中描述了您的查询。将其翻译成 SQL ;)

标签: php mysql voting


【解决方案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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多