PHP / MYSQL只允许每个成员投一票?
我一直在设置奖励投票系统的任务,我不太了解php和
mysql.但我比其他任何人都更了解这一点,而我的老板正在度假.但是我一直在重用这些代码,这些代码以前留在了我们的系统上,并在今年进行了调整.
基本上投票系统工作正常,我在mysql中设置新表来捕获数据.我在现有代码中发现了一个相当大的缺陷,但我不确定如何修改它.基本上,代码允许人们在此刻多次投票.我想将每个成员仅限1票,以保持公平. 所以目前,会员使用会员号登录,然后投票.投票存储在mysql表中,然后我可以通过查询数据来累加投票. 我希望有人可以帮我添加一行或两行代码,只需检查成员是否已经投票.当一个成员投票时,他们的成员没有.存储在sql表中以及他们的投票选择.因此,最好的方法是查看表中是否已存在memeberid,如果确实存在,请告诉用户他们已经投票 – 或者说是这样的话. <?php //Insert into volunteer awards $coach=mysql_real_escape_string($_SESSION['coach']); $official=mysql_real_escape_string($_SESSION['official']); $young_volunteer=mysql_real_escape_string($_SESSION['young_volunteer']); $volunteer=mysql_real_escape_string($_SESSION['volunteer']); $memberid=$_SESSION['MM_Username']; $association=$_SESSION['MM_Association']; $region=$_SESSION['Region']; $sql_query = mysql_query("INSERT INTO awards_2009_votes (`id`,`member_id`,`region`,`coach`,`official`,`volunteer`,`young_volunteer`) VALUES ('','$memberid','$region','$coach','$official','$volunteer','$young_volunteer')") or die (mysql_error()); ?> 谢谢 解决方法
这是一个快速而肮脏的方法:
$sql_query = "SELECT FROM awards_2009_votes WHERE member_id = '$memberid'"; $sql_result = mysql_query($sql_query); $num_rows = mysql_num_rows($sql_result); if ($num_rows > 0) { // this member has already voted } else { // carry on } 正如Piskvor指出的那样,这个解决方案至少有两个限制: >它仅限于包含它的方法,因此它通常不会阻止多次投票 – 只能通过这种特定的方法. (您可以编写一个函数来包含相同的检查,但是您仍然需要在用户尝试投票的任何地方调用该函数.) 考虑到这些要点,我的建议是首先运行一个脚本来检查您的投票表中是否出现重复的member_id值,在每种情况下删除除一个以外的所有值,然后将UNIQUE约束添加到您的表中.从那里你可以确定你的表永远不会有多个具有相同member_id的行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |