我的查询是三个表上的几个左连接。返回的行数为30k。行很大。
查询执行正常(如在mysql_query($ sql)中不会导致错误)。
如果我使用while($ row = mysql_fetch_array($ result)){}循环遍历此查询,则没有问题。但是,在while循环之前我这样做:
0xFFFFFFFF
并且php在$types = array();
while($field = mysql_fetch_field($result)){
switch($field->type) {
case "int":
$types[$field->name] = 'int';
break;
case "real":
$types[$field->name] = 'float';
break;
default:
$types[$field->name] = 'string';
break;
}
}
行引发致命错误:
致命错误:允许的内存大小为134217728个字节(尝试分配24个字节)
为什么会这样,为什么mysql_fetch_field
while循环也不会导致内存问题?如何使用mysql_fetch_array
获取字段名称类型。
答案 0 :(得分:0)
尝试使用带偏移的mysql_fetch_field
$types = array();
$index=0;
$num_fields=mysql_num_fields($resource);
while($index<$num_fields) {
$field=mysql_fetch_field($resource, $index);
switch($field->type) {
case "int":
$types[$field->name] = 'int';
break;
case "real":
$types[$field->name] = 'float';
break;
default:
$types[$field->name] = 'string';
break;
}
$index++;
}