2017-07-04 3 views
0

を実行する際にループが消耗メモリエラーで終了する、サイトがでクラッシュ:「268435456バイトのメモリサイズが排気可(254643のバイトを割り当てることを試みた)」PHP行う-ながら、次のコードを実行する一方で、SQLコード

 $queID = "LCGQ00" . $ID; 
     $sqlquecheck = "Select QueryID FROM Questions Where QueryID = '$queID' limit 1;"; 
     $quequery = $this->db->query($sqlquecheck); 

     if($quequery->num_rows() > 0) 
     { 
      do{ 
       $queID = $queID . "-" . $ID; 
       $quequery = $this->db->query($sqlquecheck); 
      }while($quequery->num_rows() > 0); 
     } 

エラーが犯人として、次のコード行を指している:私は何をしようとしている

$queID = $queID . "-" . $ID; 

パッドは、新しいものを作成するために、既存のIDで、目であればすでに存在していて、何度も何度も繰り返しています。

結果が既にある場合は、パッド関数がクエリを再送信し、まだ結果を返すかどうかを再度確認します。

ご協力いただければ幸いです!

編集はFIXED:

 if($quequery->num_rows() > 0) 
     { 
      do{ 
       $queID = $queID . "-" . $ID; 
       $sqlquecheck2 = "Select QueryID FROM Questions Where QueryID = '$queID' limit 1;"; 
       $quequery2 = $this->db->query($sqlquecheck2); 
      }while($quequery2->num_rows() > 0); 
     } 

はまた* FETCH_および他の方法は、私はこの方法を使用する理由である、異なるアプローチをしようとしたときに働いていませんでした。これは完璧である必要はありませんでした.dbエラーを排除するだけでした。再度、感謝します。

+2

は(ない' $ quequery-> NUM_ROWSをしてみてください –

+0

また、ここで変数を再利用することはおそらく最良の考えではありません –

+0

私は再実行したときにそれを前提としていました $ quequery = $ this-> db-> query($ sqlquecheck); 新しいIDの結果がない場合は、0が返されますか? –

答えて

0

あなたは$sqlquecheckを変更することはありません。そのため、Select QueryID FROM Questions Where QueryID = 'LCGQ00' limit 1;"が何かを返す間に実行されます。

他のプロセスがデータベースを変更しない限り、0回または永遠に実行されます。

は `減少したことがない?)

$queID = "LCGQ00" . $ID; 
     $sqlquecheck = "Select QueryID FROM Questions Where QueryID = '$queID' limit 1;"; 
     $quequery = $this->db->query($sqlquecheck); 

     if($quequery->num_rows() > 0) 
     { 
      do{ 
       $queID = $queID . "-" . $ID; 
       $sqlquecheck = "Select QueryID FROM Questions Where QueryID = '$queID' limit 1;"; 

       $quequery = $this->db->query($sqlquecheck); 
      }while($quequery->num_rows() > 0); 
     } 
+0

ああ、私は' $ sqlquecheck'と ' $ quequery'の中でdo-whileの中で、完璧に動作してくれてありがとうございます。 –

+0

あなたは歓迎ですが、やや珍しい方法でやっているようですが、例えばユニークなIDを生成するための自動インクリメント整数フィールドは、あなたがやっているやり方には多くの短所があります。何百という文字数のIDで終わることは間違いありません! – JeffUK

関連する問題