首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么mysql_fetch_field会耗尽这个查询中的内存?

为什么mysql_fetch_field会耗尽这个查询中的内存?
EN

Stack Overflow用户
提问于 2015-07-05 17:29:49
回答 1查看 325关注 0票数 2

我的查询是三个表上剩下的两个联接。返回的行数为30k。这几排很大。

查询执行得很好(在mysql_query($sql)中不会导致错误)。

如果我用while($row = mysql_fetch_array($result)){}循环这个查询,就没有问题。但是,在while循环之前,我执行以下操作:

代码语言:javascript
复制
$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获取字段名类型。

EN

回答 1

Stack Overflow用户

发布于 2015-07-05 17:54:55

尝试使用带有偏移量的mysql_fetch_field

代码语言:javascript
复制
$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++; 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31233080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档