2017-11-29 13 views

答えて

0

それが無限ループです。

あなたがやっている:

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

をし、それを評価する:

while($rowcd) 

それがあるべきとき:代わりに、両方の線の

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

+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

最初のクエリを残して、2番目のクエリから更新しています。\ –

+0

どういう意味ですか? – kchason

+0

ループが開始するときに3つの行があると仮定すると、最初の行をそのまま残して2番目の行からクエリが更新されます。 –

関連する問題