gpt4 book ai didi

php - MYSQLi bind_result 分配太多内存

转载 作者:行者123 更新时间:2023-11-29 01:18:48 25 4
gpt4 key购买 nike

<分区>

我正在尝试从 MYSQL 中获取多行,但是当将变量绑定(bind)到结果时,MYSQLi 会用完内存来分配,因为它会尝试一次获取所有行并缓冲完整的 LONGBLOB 大小,即使在不需要时也是如此。

错误也讨论了here .一位张贴者似乎已经使用 mysqli_stmt_store_result 解决了这个问题,但没有详细说明具体如何(mysqli_stmt_store_result 是一种过程性(非 OO)方法。

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4294967296 bytes)

理想情况下,无论如何我更愿意使用 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;
}

感谢所有帮助!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com