php mysqli:查询if是否返回true?

时间:2016-05-12 01:44:02

标签: php mysqli

我正在尝试检查我的数据库行,我的代码有效但我的if和else语句出现问题。下面的代码是不起作用的。在PHP mysqli :: query页面上,它表示错误时返回false。如果是这样的话我的else语句应该运行,而代码只是完全跳过else语句。

$conn = new mysqli($servername, $username, $password, $database);
if ($result = mysqli_query($conn,"SELECT * FROM codes WHERE email='" .$email. "'")) {
    while ($row = mysqli_fetch_array($result)) {
        $input_box = $row['code'];
    }
}
else {
    $emailErr = '<span style="color:red;font-size:16px">Email did not match any lists.</span>';
    $email_input = test_input($_POST["email"]);
}
$conn->close();

我的代码有什么问题,或者我误解了它如何返回false以及何时返回false。如果你能帮我把else语句运行,我会很高兴的!

编辑:澄清代码在if语句应该正确的时候执行,但是什么时候不应该运行else语句。

1 个答案:

答案 0 :(得分:1)

正如@Dagon所说, ...如果找不到匹配项,查询将返回

因此,不要仅依赖于mysqli_query(),而是使用mysqli_num_rows()检查SELECT查询是否返回任何行,如下所示:

$conn = new mysqli($servername, $username, $password, $database);
if ($result = mysqli_query($conn,"SELECT * FROM codes WHERE email='" .$email. "'")) {
    if(mysqli_num_rows($result)){
        while ($row = mysqli_fetch_array($result)) {
            $input_box = $row['code'];
        }
    }else{
        $emailErr = '<span style="color:red;font-size:16px">Email did not match any lists.</span>';
        $email_input = test_input($_POST["email"]);
    }

}
$conn->close();

以下是参考资料: