gpt4 book ai didi

php - 为什么 mysql_fetch_field 会在此查询中耗尽内存?

转载 作者:行者123 更新时间:2023-11-29 03:30:35 24 4
gpt4 key购买 nike

我的查询是对三个表进行几个左连接。返回的行数为 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 在 mysql_fetch_field 行抛出一个 fatal error :

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 24 bytes)

这是为什么,为什么 mysql_fetch_array while 循环也不会导致内存问题?以及如何使用 mysql_fetch_field 获取字段名称类型。

最佳答案

尝试使用带偏移量的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++;
}

关于php - 为什么 mysql_fetch_field 会在此查询中耗尽内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com