Сначала я был бы:Php - вызов функции члена FETCH_ASSOC()
public function getAllUserTasks($user_id) {
$stmt = $this->conn->prepare("SELECT t.* FROM tasks t, user_tasks ut WHERE t.id = ut.task_id AND ut.user_id = ?");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$stmt->bind_result();
$tasks = $stmt->get_result();
$stmt->close();
return $tasks;
}
и эта функция есть проблема с get_result()
поэтому вместо get_result теперь функцию писать BIND и FETCH:
public function getAllUserTasks($user_id) {
$stmt = $this->conn->prepare("SELECT t.* FROM tasks t, user_tasks ut WHERE t.id = ut.task_id AND ut.user_id = ?");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$tasks = array();
$stmt->bind_result($id, $task, $status, $created_at);
$stmt->fetch();
$tasks["id"] = $id;
$tasks["task"] = $task;
$tasks["status"] = $status;
$tasks["created_at"] = $created_at;
$stmt->close();
return $tasks;
}
Но на другой файл index.php теперь я получаю: <b>Fatal error</b>: Call to a member function fetch_assoc() on a non-object in <b>/home/agroagro/public_html/agroMobile/v1/index.php</b> on line <b>155</b><br />
так есть код:
$app->get('/tasks', 'authenticate', function() {
global $user_id;
$response = array();
$db = new DbHandler();
// fetching all user tasks
$result = $db->getAllUserTasks($user_id);
$response["error"] = false;
$response["tasks"] = array();
// looping through result and preparing tasks array
while ($task = $result->fetch_assoc()) { <--HERE IS LINE 155 and ERROR
$tmp = array();
$tmp["id"] = $task["id"];
$tmp["task"] = $task["task"];
$tmp["status"] = $task["status"];
$tmp["createdAt"] = $task["created_at"];
array_push($response["tasks"], $tmp);
}
echoRespnse(200, $response);
});
Я пытаюсь решить этот весь день и не работает ... Может ли кто-нибудь сказать мне, что именно здесь проблема?
В чем проблема с этим кодом?
Вы двойной выборки это ... '$ tasks' уже содержит свой результат ... – RichardBernards
, как решить, что мне нужно изменить в коде? – LaraBeginer
'stmt-> bind_result ($ id, $ task, $ status, $ created_at);' + '$ tasks ['id'] = $ id' просто выглядит грязным, IMO. Просто выберите строку (ы) в качестве массива-члена из поля –