我的查询是三个表上剩下的两个联接。返回的行数为30k。这几排很大。
查询执行得很好(在mysql_query($sql)中不会导致错误)。
如果我用while($row = mysql_fetch_array($result)){}循环这个查询,就没有问题。但是,在while循环之前,我执行以下操作:
$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;
}
}而php在行中抛出一个致命错误:
致命错误:允许内存大小为134217728字节(尝试分配24个字节)
为什么,为什么mysql_fetch_array while循环也不会导致内存问题呢?以及如何使用mysql_fetch_field获取字段名类型。
发布于 2015-07-05 17:54:55
尝试使用带有偏移量的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++;
}https://stackoverflow.com/questions/31233080
复制相似问题