2017-11-29 7 views
0

C 초과 120 초 최대 실행 시간 : \ wamp64 최대 실행 시간 : wamp64 www가

나는 나의 루프가 아닌 희망을 .... www가 \ 무한.

Select 문에는 5 개의 행이 있습니다. (때로는 더 적을 수도 있음)

+0

얼마나 많은 행

while($rowcd = $stmtp->fetch(PDO::FETCH_ASSOC)) 

을 해당 SELECT 문이 있습니까? – LordNeo

+0

@LordNeo Select 문에는 5 개의 행이 있습니다. (때로는 적게 가질 수도 있습니다) –

답변

0

그것은 무한 루프입니다.

당신이하고있는 : 다음

$rowcd = $stmtp->fetch(PDO::FETCH_ASSOC); 

을하고하는 것은 평가 :

while($rowcd) 

그것이해야 할 때 대신 두 줄

+0

두 가지 답변을 모두 주셔서 감사합니다. –

1

bindParam()의 사용법에서, 나는 당신이 클래스로 추상화 한 PDO를 사용하고 있다고 가정합니다.

한번만 fetch()을 호출하면 한 행을 반환 한 다음 while 문을 사용합니다. 루프에서 결코 업데이트되지 않으므로 항상 TRUE으로 평가되므로 루프가 계속됩니다.

이 이론을 테스트하려면 중단 점까지 실행 배열에 대한 간단한 루프, 실행할 수 있습니다 : 나는 $Sr 변수가 어디에서 오는 완전히 확실하지 않다

<?php 
while(array(1,2,3)){ 
    echo date('H:i:s'); 
} 

을하지만, 기반 첫 번째 쿼리의 ORDER BY 절이 첫 번째 쿼리에서 반환됩니다.

따라서 통해 루프 필요과 같이 다음 행 매번 가져 오기 :

... 
while ($row = $stmtp->fetch()) { 
    $stmtd = $user_home->runQuery('UPDATE invoice 
             SET State=:uname            
             WHERE Sr = :crn'); 
    $stmtd->bindParam(':crn',$row['Sr']); 
    $stmtd->bindParam(':uname',$st); 
    $stmtd->execute(); 
} 
... 
+0

첫 번째 쿼리를 두 번째에서 남겨두고 두 번째로 ... \ –

+0

무엇을 의미합니까? – kchason

+0

루프가 시작될 때 3 개의 행이 있다고 가정하면, 첫 번째 행을 그대로두고 두 번째 행에서 쿼리가 업데이트됩니다. –

관련 문제