此SQL查询返回结果,然后会话保存空变量,如$_SESSION["fbid"] = $user->fbid;
,数组将为Array ( [fbid] => )
。
$result = $mysqli->query("SELECT * FROM `users` WHERE `fbid` = '$fbid'") or die(mysqli_error());
if ($result) {
$user = $result->fetch_object();
...
主要问题是,当数据库中没有任何记录时,为什么要通过if ($result)
?
答案 0 :(得分:1)
您说if($result)
这说明你的if总是如此。
例如,您需要说if($result == 1)
。
你需要让$ result等于或等于。
这就是if语句的工作原理。但是,你说“如果查询”无论如何都无法工作,你需要说出像
这样的内容if(mysqli_num_rows($result) > 0){
$user = $result->fetch_object();
}
答案 1 :(得分:1)
mysqli->query
会返回 true 或 false 或mysqli_result
对象。
真实和mysqli_result
对象都将通过if($result)
,并在错误情况中返回false
。获得空结果不是错误。
如果您需要检查查询是否返回空结果,请使用$num_rows
属性,例如。
答案 2 :(得分:1)
如果if ($result)
失败,您的测试mysqli_query()
将失败,可能是语法错误。
如果您有有效的查询,您的测试将通过。即使您的有效查询返回空集(确实没有找到 有效结果),也是如此。
您需要检查查询结果以确保查询实际成功,但这与检查它是否返回任何内容不同。
尝试
$result = $mysqli->query("select...");
if ($result->num_rows) {
// do stuff
}
答案 3 :(得分:0)
mysqli::query
会返回FALSE
。在这种情况下,它没有失败 - 它已成功执行,并返回零行。
如果要检查空结果集,请检查fetch_object
的返回值:
$user = $result->fetch_object();
if ($user) {
# do stuff...