[英]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.