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:在投票系统中,如何防止用户看到他已经投票的个人资料?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组存储到mysql中?

在不使用帐户的情况下设计 Django 投票系统

Rails 3:阻止用户对自己的内容进行投票

防止验证码的恶意发送

问答系统的数据库结构

PHP+MySql+jQuery实现的“顶”和“踩”投票功能