PHP代码导致服务器挂起

时间:2011-02-22 07:17:39

标签: php sql mysql hang

由于以下代码中的错误,我真的很难点击我的服务器:

    $qqq = mysql_query("SELECT * FROM coupons WHERE dateExp > CURDATE()");
$isExpired = array();
while($row = mysql_fetch_array($qqq))
{
    $isExpired[] = $row;
}
foreach($isExpired as $exp)
{
    if($exp['id'] == $coupID)
    {
        $expiredConf = 1;
    }
}
if($expiredConf == 1)
{
    echo "<link rel='stylesheet' href='grey.css' type='text/css' />";
}
else
{
    echo "<link rel='stylesheet' href='coupStyle.css' type='text/css' />";
}

我已经写过这样的代码一百次了,我把它与我的旧例子进行了比较,但是我无法弄清楚是什么导致了这么大的问题。

3 个答案:

答案 0 :(得分:1)

我不确定这对周围的代码有什么用处,但是如果这部分没有影响到任何其他区域,你可以真正地压缩它:

$result = mysql_result(sprintf("SELECT id FROM coupons WHERE id = %d AND dateExp > CURDATE()",
                               mysql_real_escape_string($coupID)));

if(!$result){
    $url = 'coupStyle';
} else {
    // Found result
    $url = 'grey';
}

echo '<link rel="stylesheet" href="'.$url.'" type="text/css" />';

如果您不需要从表中选择每一列,请尝试仅放下一列,如果可能,请设置表的ID。此外,通常建议避免在select中使用*,而是指定所需的列。

答案 1 :(得分:0)

也许您应该稍微更改一下代码,因为使用大数组总是很慢:

while($row = mysql_fetch_array($qqq))
{
    $isExpired[] = $row;
    if($row['id'] == $coupID)
    {
        $expiredConf = 1;
    }
}

除此之外,你的代码看起来很好。你在这个记录集中有多少条记录?

答案 2 :(得分:0)

您可以减少以上代码行,不需要额外的一个foreach循环

while($row = mysql_fetch_array($qqq))
{
   $isExpired[] = $row;
   if (in_array($coupID,$row))
   {
     $expiredConf = 1;         
   }

}