php mysqli if语句

时间:2011-03-25 19:53:13

标签: php mysqli

所以我只是为测试/学习目的进行简单的电子邮件验证,但我无法弄清楚出了什么问题。这是问题所在:

查询工作..它更新了我的表中的字段,但它应该只在active = 0时才这样做。所以基本上,它仍然回应“成功”,即使active = 1,它也不应该查询,因为它只应该抓住WHERE active = 0 ......这有意义吗?看看这个

<?php 
$connection = new mysqli('localhost', 'user', 'pass', 'db');
if (mysqli_connect_errno()) {
    printf("Can't connect to MySQL Server. Errorcode: %s\n",
        mysqli_connect_error());
    exit;
}

$email      = $_GET['email'];
$activation = $_GET['hash'];

$query = $connection->query("UPDATE users SET active = '1' WHERE
    email='".$email."' AND activationCode='".$activation."' AND active='0'");

if ($query){
    echo "success";
} else {
    echo "fail";
}

$connection->close();
?>

1 个答案:

答案 0 :(得分:3)

查询返回true,因为查询执行得很好,即使它不影响任何行。如果查询无效,它只返回false。您应该研究检索受影响的行数。 (例如mysql_num_rows($query)。)

此外,在查询中使用$ _GET或$ _POST中的值时,应使用mysql_real_escape_string($getvalue)来阻止MySQL注入。