Я пытаюсь получить несколько строк из MYSQL, но при привязке переменных к результату MYSQLi исчерпывает память для выделения, когда он пытается извлечь все строки одновременно и буферизирует полный размер LONGBLOB, даже если это не необходимо.
Здесь также обсуждается ошибка. Один плакат, похоже, решил проблему, используя mysqli_stmt_store_result
, но не уточняет, как именно (и mysqli_stmt_store_result
является процедурным (а не OO), методом.
Неустранимая ошибка: допустимый размер памяти 134217728 байт исчерпан (пытался выделить 4294967296 байт)
В идеале, я бы предпочел использовать fetch_object()
любом случае, но я не могу понять, как заставить его функционировать с моим подготовленным заявлением.
public function display() { $page_offset = ($this->get_page_number()- 1) * $this->notes_per_page; if ($page_offset < 0) { $page_offset = 0; } $sql = "SELECT title, date_posted, text, url FROM notes ORDER BY date_posted DESC LIMIT ?, ?"; $results = $this->query($sql, "ii", $page_offset, $this->notes_per_page); $results->bind_result(&$title, &$date_posted, &$text, &$url); //while ($row = $result->fetch_object()) { //store_result()) { //echo 'success'; //var_dump($row); //} //$this->write($results); } // Here is the query function that $this->db->query() above refers to. public function query() { $args = func_get_args(); $statement = $this->db->prepare($args[0]); $args = array_slice($args, 1); call_user_func_array(array($statement, 'bind_param'), &$args); $statement->execute(); return $statement; }
Спасибо за любую помощь!
это не MEDIUM, а LONG TEXT размер.
проверьте определение таблицы
Я решил это, используя следующий код. По-прежнему существует проблема, так как некоторые возвращенные данные выглядят искалеченными, но я считаю, что заслуживает собственного вопроса. Мне было сложно понять, что store_result () нужно вызвать в объекте mysqli, а fetch_object () нужно вызвать в инструкции.
public function display() { $page_offset = ($this->get_page_number()- 1) * $this->notes_per_page; if ($page_offset < 0) { $page_offset = 0; } $sql = "SELECT title, date_posted, text, url FROM notes ORDER BY date_posted DESC LIMIT ?, ?"; $results = $this->query($sql, "ii", $page_offset, $this->notes_per_page); $results = $this->db->store_result(); while ($row = $results->fetch_object()) { var_dump($row); } //$this->write($results); }
mysqli_stmt_store_result
имеет форму OO .