mysql_num_rows如果count大于1

时间:2014-04-15 18:36:52

标签: php mysql mysql-num-rows

我正在使用Mysql_num_rows来获取数据(他们的电子邮件和IP),如果它已经被所述用户输入,那么它将会下降,但如果没有则会成功。

然而,如果我改变我的IP它仍然成功,当它不应该因为我仍然使用相同的电子邮件?它没有检查电子邮件和IP。提前谢谢你' - '

$query = "SELECT * FROM tbl_1 WHERE Email='$Email' AND IP='$ip'";
$Result = mysql_query($query) or die ('unable to run: ' .mysql_error());
$count = mysql_num_rows($Result);

if($count==1) 
{
echo 'You have already entered this competition!';
}
else {
echo 'success';
}

3 个答案:

答案 0 :(得分:2)

您的代码包含WHERE Email='$Email' AND IP='$ip'";但您写的in a comment

  

“$ Email = $ _ POST ['email'];来自提交表单,IP来自代码:$ IP = $ _SERVER [”REMOTE_ADDR“];位于此脚本页面的顶部

您正在使用$IP = $_SERVER["REMOTE_ADDR"];,您应该使用

$ip = $_SERVER["REMOTE_ADDR"];

WHERE Email='$Email' AND IP='$IP'";

$IP$ip不是一回事,他们只是“两个不同的动物” ---
变量区分大小写。

旁注: 您可以使用OR代替AND,如果有人尝试使用不同的电子邮件注册但使用相同的IP(反之亦然),那么他们将无法使用。


<强>脚注:

mysql_*函数弃用通知:

http://www.php.net/manual/en/intro.mysql.php

从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqliPDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。

这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/

可以在»http://dev.mysql.com/doc/找到MySQL的文档。

答案 1 :(得分:0)

你可以尝试这样,它有点不同

$query = "SELECT COUNT(*) as count Email, IP FROM tbl_1 WHERE Email='$Email' AND IP='$ip'";
$Result = mysql_query($query);
if($Result){
    $row = mysql_fetch_assoc($Result);
    if((int)$row['count'] > 0) 
    {
        echo 'You have already entered this competition!\n';
        echo $row['Email'];
        echo $row['IP'];
    }
    else {
        echo 'success';
    }
}else{
    die ('unable to run: ' .mysql_error());
}

答案 2 :(得分:-1)

首先,您应该将mysql_fetch_assoc()用于查询

中的变量

检查列名是否写得正确,你应该这样做:

$query = "SELECT * FROM tbl_1 WHERE Email='$Email' AND IP='$ip'";
$Result = mysql_query($query) or die ('unable to run: ' .mysql_error());

if(mysql_num_rows($Result)) 
{
    echo 'You have already entered this competition!';
}
else {
    echo 'success';
}

因为你可以通过这封电子邮件获得超过1条记录,而在mysql中有ip成功