2011-11-29 4 views
-2

그래서이 루프를 실행하려고 :30 초 시간 제한 PHP - 치명적인 오류

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 

답변

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']; 
} 
+0

대신에 mysql_fetch_assoc을 원할 것입니다. 약간 빠릅니다. –

+0

@TomvanderWoerdt - 업데이트되었습니다, 감사합니다! 그냥 궁금해서, 얼마나 빨랐는지/얼마나? 왜냐하면'mysql_fetch_array'는 수치 적 연관 인덱스 배열을 반환하기 때문입니다. 반면에 mysql_fetch_assoc은 연관 적으로 연관되어 있습니까? – nickb

+0

예, 그것이 이유입니다. 시간 차이는 실제로 작지만 데이터베이스에서 50KB BLOB 필드 (예 : 이미지)를 가져 오는 경우 큰 차이가 될 수있는 메모리 양의 두 배가됩니다. –

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']; 
} 
+0

당신은 너무 옳습니다, 나는 오늘 너무 어리 석다! 나는이 사실을 알고. 2 일 연속으로이 디스플레이 인터페이스를보고 피곤한 눈을 감출 수 있습니다! –

+1

당신은 rubberducking를 시도해야한다, 그것의 굉장한! –

+0

+1 [rubberducking] (http://en.wikipedia.org/wiki/Rubber_duck_debugging) –

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']; 
} 

작동하지만 하나의 레코드가있을 때 나는 루프가없는 상태로 만들 것입니다. 그때는 필요하지 않습니다.

+0

사실이 아니면 mysql_query는 실패시 (즉 리소스가 아님) false를 반환합니다. – nickb

+0

나는 그것을 알고 있지만 여기 항상 자원을 돌려 보냈다. 그렇지 않으면 infinte 루프가되지 않습니다. –

관련 문제