加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP / MYSQL只允许每个成员投一票?

发布时间:2020-12-13 21:59:55 所属栏目:PHP教程 来源:网络整理
导读:我一直在设置奖励投票系统的任务,我不太了解php和 mysql.但我比其他任何人都更了解这一点,而我的老板正在度假.但是我一直在重用这些代码,这些代码以前留在了我们的系统上,并在今年进行了调整. 基本上投票系统工作正常,我在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的行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读