2011-09-14 3 views
0

php + mysqlを使用してサーバーから値を返すときに問題が発生します。すべての行を取得すると、mysqlのフェッチ結果が空になる

私は休憩を追加する場合はこれが私のコード

$result = mysql_query("SELECT * FROM Nicknames", $con); 

    if (mysql_real_escape_string($_POST['Create']) == "NICKNAME") { 
     $output;   
     while ($row = mysql_fetch_assoc($result)) { 
      if ($row['Taken'] == '0') $output = $output . $row['Nickname'] . ","; 
     } 
     echo substr($output, 0, -1); 

    } 

です。 whileループでは完全に動作し、テーブルの1行しか取得できません。 代わりに3000行すべてを返す場合は、サーバーから空の応答を取得するだけです。

テーブルに10行がある場合、それは機能します。

最終的な特殊文字のために、それは行の量であるかどうか、私は疑問に思っていました。私はより多くを取得しようとする場合、それは1330行まで働く

おかげ

UPDATE は、私は空の結果

$counter = 0;  
     while ($row = mysql_fetch_assoc($result)) { 
      if ($row['Taken'] == '0') $output = $output . $row['Nickname'] . ","; 
      if ($counter == 1330) break; 
      $counter++; 
     } 
     echo substr($output, 0, -1); 
+0

SQLクエリを投稿して、実際にデータベースにどのように問い合わせているかを確認できますか? –

+0

また、$ row ['Taken']は常にascii char 0ですか? –

+0

スクリプトの時間実行に問題があると思います。 – ZigZag

答えて

1

どこかでなければなりません場合は後にそこに持っているかもしれ

0

あなたはエラーメッセージを表示しようとしたことがあり得ますか?

error_reporting(E_ALL|E_STRICT); 
    ini_set('display_errors', true); 

$出力があなたの反響に入る前のmemory_limitを満たしている可能性がある、とはdisplay_errorsがfalseの場合は、エラーがメモリ不足を知らせる表示されません。

+0

私は試してみましたが、私はエラーを取得しないでください。また、メモリの上限は現在96Mです。私は、テキストだけで3000行のために十分だと思いますよね? – aneuryzm

0

おそらくあまりにも明白ですが、... php.iniでmax_execution_timeの値を確認しましたか?

3000行のフェッチを完了する前に、スクリプトが死んでいる可能性があります。

は条件があなたのテーブルの行の途中で$output = "";

+0

セキュリティ上の理由によりset_time_limit()が無効にされています – aneuryzm

-1

$outputこの問題を回避するために、スクリプトの先頭に

set_time_limit(0); 

を設定してみてください無効な文字です。

どの行が動作を停止しているか分かっているので、異なるORDER BYを指定してSELECTを実行して、そうであるかどうかを判断してください。 :)

+0

とは言えませんが、とにかく動作します。 – aneuryzm