2017-11-29 5 views
0

maximale Ausführungszeit von 120 Sekunden in C überschritten: \ wamp64 \ www ....Maximale Ausführungszeit von 120 Sekunden in C überschritten: wamp64 www

Ich hoffe, meine Schleife nicht ist unendlich.

if(isset($_POST['del'])) 
    { 
     $id = $_GET['id']; 
     $st = "Y"; 
      $stmtp = $user_home->runQuery('SELECT * FROM invoice WHERE BRN = :inv ORDER BY Sr ASC '); 
    $stmtp->bindParam(':inv',$id); 
    $stmtp->execute(); 
    $rowcd = $stmtp->fetch(PDO::FETCH_ASSOC); 
    if($stmtp->rowCount() > 0) 
    { 
    while($rowcd) 
     { 
      extract($rowcd); 
     $stmtd = $user_home->runQuery('UPDATE invoice 
             SET State=:uname            
             WHERE Sr = :crn'); 
      $stmtd->bindParam(':crn',$Sr); 
      $stmtd->bindParam(':uname',$st); 
      $stmtd->execute(); 
     } 
    } 
    } 

Select-Anweisung hat 5 Zeilen. (manchmal kann es weniger haben)

+0

Wie viele Zeilen habe diese SELECT-Anweisung? – LordNeo

+0

@LordNeo Select-Anweisung hat 5 Zeilen. (manchmal kann es weniger haben) –

Antwort

0

Es ist eine unendliche Schleife ist.

Sie tun:

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

und dann der Bewertung:

while($rowcd) 

Wenn es sein sollte:

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

Statt beiden Linien

+0

Vielen Dank beide Antworten gaben mir die Lösung! –

1

Von Ihrer Verwendung von bindParam() nehme ich an, dass Sie PDO verwenden, das Sie in eine Klasse abstrahiert haben.

Sie rufen nur die fetch() einmal, die eine einzelne Zeile zurückgibt, dann mit einer while-Anweisung darauf. Das wird nie in der Schleife aktualisiert, so dass es immer TRUE auswertet und somit die Schleife fortsetzt.

diese Theorie zu testen, können Sie eine einfache Schleife auf einem Array laufen, die bis zu einem Haltepunkt läuft:

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

Ich bin nicht ganz sicher, wo die $Sr Variable herkommt, sondern basiert auf Die ORDER BY-Klausel in Ihrer ersten Abfrage wird in der ersten Abfrage zurückgegeben.

Daher müssen Sie eine Schleife durch und holen die nächste Zeile jedes Mal wie folgt:

... 
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

Es verlässt die erste Abfrage und Aktualisierung von der Sekunde und auf ... \ –

+0

Was meinst du? – kchason

+0

Nehmen wir an, dass beim Start der Schleife drei Zeilen vorhanden sind. Abfragen werden ab der zweiten Zeile aktualisiert, wobei die erste Zeile so bleibt, wie sie ist. –

Verwandte Themen