PHP MySQLi查询返回数据,但结果变量为null

时间:2018-07-12 20:50:57

标签: php mysqli

对于您来说,我可能有一个非常简单的问题,但这让我发疯。

在我的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;
}

这是功能的屏幕截图 enter image description here

,它返回null enter image description here

编辑: 好的,我坚决地说,在关闭语句之后,数据将丢失。如果我仍然想返回语句的数据,那就是真的。但在关闭之前,我将数据存储在变量中。然后关闭它。关闭变量后,我仍然在调试中检查了数据。 enter image description here

然后我想也许变量也将设置为null(毕竟我在php中是个菜鸟,我认为没有任何意义:D) 所以我只返回True。但是它在接收端仍然无效。

1 个答案:

答案 0 :(得分:2)

在关闭语句之前,您需要从$result中提取所需的数据。关闭该语句将清除该语句和相关的结果集,从而呈现值null

由于getUserByPhone似乎应该返回一个用户,因此建议您从结果中获取用户数据并返回该数据,而不是关闭该语句,然后尝试返回mysqli结果对象。

类似的东西:

$result = $stmt->get_result();
$user = $result->fetch_assoc();
$stmt->close(); 
return $user;