30秒超时PHP - 致命错误

时间:2011-11-29 18:56:58

标签: php mysql

所以我试图运行这个循环:

while ($serv = mysql_query("select serv_desc from service where serv_id='".$service."'")) {
   $serv_desc = $serv['serv_desc'];
}

serv_id只是一个数字。

$service是来自$_POST

的数字

serv_desc是服务的描述 - 也许是一两个字。

为什么要暂停超时?

Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\globaldetroit\display.php on line 18

3 个答案:

答案 0 :(得分:4)

这是一个无限循环!您将一再重复执行查询。

试试这个:

// Added intval() to prevent SQL injection and standardized variable names ($result)
$sql = "select serv_desc from service where serv_id='" . intval( $service) . "'";
$result = mysql_query( $sql);
$serv_desc = array();
while ($row = mysql_fetch_assoc( $result)) 
{
   $serv_desc[] = $row['serv_desc'];
}

答案 1 :(得分:2)

您的代码如下所示:

  

我可以创建新查询吗?如果可以的话,再做一次

你应该这样做(我还添加了针对SQL注入的保护):

$query = mysql_query("select serv_desc from service where serv_id='".mysql_real_escape_string($service)."'");
while ($serv = mysql_fetch_assoc($query)) {
   $serv_desc = $serv['serv_desc'];
}

答案 2 :(得分:0)

也许是因为我是一个无限循环,因为mysql_query总是返回资源。 试试这个。

$servRes = mysql_query("select serv_desc from service where serv_id='".$service."'");
while ($serv = mysql_fetch_array($servRes, MYSQL_ASSOC)) {
    $serv_desc = $serv['serv_desc'];
}

它有效,但当你只有一条记录可以通过时,我会在没有循环的情况下完成它。那时候不需要它。