我正在尝试检查我的数据库行,我的代码有效但我的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语句。
答案 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();
以下是参考资料: