如何在另一个页面上获取bind_result()的值

时间:2015-08-26 11:27:35

标签: php mysql

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

上出错

1 个答案:

答案 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)。