对于您来说,我可能有一个非常简单的问题,但这让我发疯。
在我的index.php中,我在第一行代码中调用userHandler
从MySQL检索数据,但是无论我做什么,$ result都为空。
在调试时,我可以清楚地看到MySQL返回一行并且其不为null。
$result = $userHandler->getUserByPhone($phoneNumber);
if ($result != NULL) {
}
这是返回结果的方法:
public function getUserByPhone($Phone) {
$stmt = $this->conn->prepare("SELECT user.* FROM user");
$stmt->execute();
$result = $stmt->get_result();
$num_of_rows = $result->num_rows;
$stmt->store_result();
$stmt->close();
return $result;
}
编辑: 好的,我坚决地说,在关闭语句之后,数据将丢失。如果我仍然想返回语句的数据,那就是真的。但在关闭之前,我将数据存储在变量中。然后关闭它。关闭变量后,我仍然在调试中检查了数据。
然后我想也许变量也将设置为null(毕竟我在php中是个菜鸟,我认为没有任何意义:D) 所以我只返回True。但是它在接收端仍然无效。
答案 0 :(得分:2)
在关闭语句之前,您需要从$result
中提取所需的数据。关闭该语句将清除该语句和相关的结果集,从而呈现值null
。
由于getUserByPhone似乎应该返回一个用户,因此建议您从结果中获取用户数据并返回该数据,而不是关闭该语句,然后尝试返回mysqli结果对象。
类似的东西:
$result = $stmt->get_result();
$user = $result->fetch_assoc();
$stmt->close();
return $user;