php - bind_result 上允许的字节内存大小耗尽

标签 php mysql

我有一个由联合较小查询构建的动态查询。我使用 union 是因为我需要从一个大列表中的几个表中获取数据。这些表有很多共同点,但我仍然需要单独表中的数据。因此我认为这个解决方案似乎是最好的解决方案。 到目前为止效果很好,但今天我添加了更多查询,现在它坏了,它给了我这个错误:

fatal error :允许的 134217728 字节内存已耗尽(已尝试分配 150994936 字节)

错误指的是这个函数:

function selectResults($stmt){
    $parameters = array();
    $results = array();

    $meta = $stmt->result_metadata();

    while ( $field = $meta->fetch_field() ) {   
     $parameters[] = &$row[$field->name]; 
    }

    //------THIS IS WHERE THE ERROR IS------
    call_user_func_array(array($stmt, 'bind_result'), $parameters);
    //--------------------------------------

    while ( $stmt->fetch() ) {
      $x = array();
      foreach( $row as $key => $val ) {
         $x[$key] = $val;
      }
      $results[] = $x;
    }

    return $results;

}

函数是这样调用的:

$mysqli = new mysqli('localhost', 'username', 'pass', 'db');
$stmt = $mysqli -> prepare("some query");
$stmt -> execute();
$results = selectResults($stmt);
$stmt -> close();
$mysqli -> close();

查询可以是 1500 字左右,是不是太多了?

将所有表放在同一个表中并只进行一个查询是否可以解决这个问题?

最佳答案

我尝试将最新的子查询与另一个子查询一起使用,但它仍然给我错误。所以我认为新的子查询是问题而不是子查询的数量。 新的子查询有一个 mediumtext 字段,而另一个子查询有一个 varchar。我尝试将 mediumtext 切换为 varchar,现在它可以工作了。我没有理由将它用作 mediumtext,所以这解决了它。

关于php - bind_result 上允许的字节内存大小耗尽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15731331/

相关文章:

mysql - SQL 中的 Group By 和having 出现问题

php - 使用 PHP 和 jQuery 预加载图像 - 逗号分隔数组?

php - Wordpress 事件 Orderby Meta 生效日期

php - 在人们将访问的页面上运行此查询是否安全?

java - 尝试插入 json 数组时出现数据插入错误?

PHP 函数转 MySQL 函数

php - MySQL:如何存储/检索艺术家信息?

php - 如何将 PHP 数组分配给 jQuery 数组?

mysql - Datamapper 是否支持 'On Duplicate Key Update' 或其他更新插入技术?

mysql - 在MySQL中查询分片数据