php - while循环允许内存

时间:2013-09-08 15:40:46

标签: php while-loop

我有这个循环:

// Upgraded Checking
if($ir['upgraded'] < time()) $upgsql = " AND `aUpgraded`='0'"; 
else $upgsql = " AND ((`aUpgraded` = 1 AND `aUpgradedType` = '{$ir['upgname']}' AND `aUpgradedType` != '') OR (`aUpgraded` = 1 AND `aUpgradedType` = '') OR `aUpgraded` = 0)";

$ess=mysql_query("SELECT * FROM ads WHERE aClicksLeft3>0 AND aPaused='0' AND aApproved>0 ".$upgsql."");


while($extendedData == mysql_fetch_assoc($ess)){

$contents.="hey!!!";



};//End While

每当我运行它时,我都会收到此错误: 允许的内存大小为134217728字节耗尽

我不知道为什么这个while循环使用这么多内存来执行。这只是一个简单的循环。

有人知道为什么会这样吗?我的脚本中有很多其他while循环,我以前从未遇到过这个错误。

2 个答案:

答案 0 :(得分:2)

当您将$extendedData与mysql fetch的结果进行比较而不是分配它时,您将获得无限循环。循环不断向$contents变量添加数据,并且在无限循环中的某个时刻,它会耗尽内存。

while( ($extendedData = mysql_fetch_assoc($ess)) ){
   $contents.="hey!!!";
};//End While

并考虑使用mysqli函数而不是折旧的mysql函数。

答案 1 :(得分:1)

留意http://in1.php.net/manual/en/ini.core.php#ini.memory-limit

ini_set('memory_limit', '-1');
while($extendedData = mysql_fetch_assoc($ess))//should be single equal to sign here
{
$contents.="hey!!!";
}