【发布时间】:2018-02-21 08:43:49
【问题描述】:
我不知道为什么,但是当我尝试在其中使用准备好的语句时,此函数返回 false,但是,当我使用非准备好的语句时,它返回 true。谁能解释一下?
代码:
function evalLoggedUser($conx,$id,$u,$p){
$sql = "SELECT ip FROM users WHERE id=? AND username=? AND password=? AND activated=? LIMIT 1";
$stmt = $conx->prepare($sql);
$var = 1;
$stmt->bind_param("issi",$id,$u,$p,$var);
$stmt->execute();
$numrows = $stmt->num_rows;
if($numrows > 0){
return true;
}
$stmt->close();
}
$user_ok = evalLoggedUser($conn,$log_id,$log_username,$log_password);
这返回错误
function evalLoggedUser($conx,$id,$u,$p){
$sql = "SELECT ip FROM users WHERE id='$id' AND username='$u' AND password='$p' AND activated='1' LIMIT 1";
$query = mysqli_query($conx, $sql);
$numrows = mysqli_num_rows($query);
if($numrows > 0){
return true;
}
}
$user_ok = evalLoggedUser($conn,$log_id,$log_username,$log_password);
返回真
【问题讨论】:
-
您检查过网络服务器的错误日志吗?
-
没有错误。
-
evalLoggedUser($conx,$id,$u,$p)和evalLoggedUser($conn,$log_id,$log_username,$log_password)和bind_param("issi",$id,$u,$p,$var)这里没有加起来,这就是问题所在。错误报告会告诉你。 -
Pus,在将数据存储到内存之前使用
num_rows可能会产生意想不到的结果。 -
我很好奇第一个示例应该如何返回
false,而唯一的可能性是true并且什么都没有,也就是null。此外,所有这些 mysqli 函数调用都有您不需要检查的返回值。我敢打赌那里有一些有用的信息。
标签: php mysqli return prepared-statement