我有一个由联合较小查询构建的动态查询。我使用联合是因为我需要从一个大列表中的几个表中获取数据。这些表有很多共同点,但我仍然需要单独表中的数据。因此,我认为这个解决方案似乎是最好的解决方案。到目前为止效果很好,但今天我添加了更多查询,现在它坏了,它给了我这个错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 150994936 bytes)
错误指的是这个函数:
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字,是不是太多了?
将所有表放在同一个表中并仅使用一个查询即可解决此问题吗?