繁体   English   中英

PHP的mysqli:查询是否返回true?

[英]php mysqli:query if returns true?

我正在尝试检查数据库行,我的代码有效,但是我的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语句。

正如@Dagon所说的, 如果没有找到匹配项...查询将返回true

因此,而不是仅依赖mysqli_query()mysqli_num_rows()使用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();

这是参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM