在db_handler.php
页
public function getAllUserList($user_id) {
$stmt = $this->conn->prepare("SELECT list_id,name,date_created FROM list WHERE user_id = ?");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$list = $stmt->bind_result($list_id,$name,$date_created);
$stmt->close();
return $list;
}
on index.php
$result = $db->getAllUserList($user_id);
while ($result->fetch()) {
$tmp = array();
$tmp["id"] = $list_id;
$tmp["list_name"] = $name;
$tmp["createdAt"] = $date_created;
array_push($response["lists"], $tmp);
}
它给出致命错误
PHP致命错误:在非对象上调用成员函数fetch()
之前我使用$stmt->get_result()
方法而不是bind_result,但它开始抛出错误
PHP致命错误:调用未定义的方法
mysqli_stmt::get_result().
如果我在while ($result->fetch())
页面上使用dbhandler.php
,它就能正常运行。但它在index.php
答案 0 :(得分:4)
您需要返回$list
而不是bind_result
并且不要关闭该声明(直到您获得所有结果之后)。
由于变量是作用域的,你还需要从函数中取出public function getAllUserList($user_id) {
$stmt = $this->conn->prepare("SELECT list_id,name,date_created FROM list WHERE user_id = ?");
$stmt->bind_param("i", $user_id);
$stmt->execute();
return $stmt;
}
...
$result = $db->getAllUserList($user_id);
$result->bind_result($list_id,$name,$date_created);
。
bind_result
$list
(以及fetch()
)返回一个布尔值来表示成功或失败,而不是结果集,因此您尝试在{{{{}}上调用true
1}}(或false
)。