2010-09-04 44 views
2

我使用一个简单的ajax脚本来允许用户对页面上的多个帖子投票。不过,我不希望同一用户不止一次投票反对同一帖子,为了避免这种情况,我登录了用户,用户名和他们在数据库中投票的帖子的ID。检查是否有人投票

像这样:

$updatevoters = "INSERT INTO voters VALUES('$userid', '$id', '$username')"; 

提交表决数据库之前,我现在需要做的是为确保用户处理不当已经这样做了。

如何查询数据库,我想使用COUNT或类似的东西来检查是否有任何匹配?

林不知道如何采取所有3个变量$userid, $id and $username和比较voters表。

基本上我希望能够建立一个IF:

If ($count = 0) { 
    ADD THE VOTE TO TABLE 
} else { 
    //DIE 
} 

任何帮助感激....

回答

0
$sql = "SELECT * FROM voters WHERE userid='$userid' AND id='$id' AND username='$username'"; 
$result = mysql_query($sql); 
if(mysql_num_rows($result)){ 
    // there ARE rows so user has already voted 
} 
else{ 
    // no rows... user hasn't voted yet 
} 

不需要个性化......如果他们在数据库然后他们已经投了票。 :)

+1

在什么地方消毒请确保您有横跨三列的索引来提高此查找。 – bramp 2010-09-04 00:58:35

+0

不,*使用* COUNT - 你发送表中的所有列数据,只是为了完全忽略COUNT。 – 2010-09-04 01:08:55

+0

您不必全部选择 - 只需要发回ID即可。即使你指望你必须发回一些东西。 – 2010-09-04 09:16:35

0

获取特定用户ID的投票记录。如果计数为零,则允许他们投票。

并请告诉我,$username被转义或线路"INSERT INTO voters VALUES('$userid', '$id', '$username')";

+0

我会假设(阅读“希望”)该用户名在用户注册之前已被转义...并且正在使用的字符串就是这个可回收字段,而不是用户输入。 – 2010-09-04 00:52:32

+0

使用Oauth,用户名来自Oauth会话,而不是用户通过站点输入。 – CLiown 2010-09-04 00:58:59