2011-09-14 22 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循環中,它完美地工作,我只是得到我的表的一行。 如果我想返回所有3000行,我只是從服務器得到一個空的答案。

如果表格有10行,它的工作原理。

我想知道它是關於行數還是因爲最終的特殊字符。

感謝

UPDATE 它的工作,直到1330行,如果我試圖讓更多的,我得到一個空的結果

$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

某處在你的錶行的中間有可能有是無效的字符。

由於您知道哪些行停止工作,請嘗試使用不同的ORDER BY運行SELECT以確定是否如此。 :)

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行取指之前死亡。

嘗試設置

set_time_limit(0); 

在腳本的開頭,以避免這個問題後

+0

set_time_limit()由於安全原因已被禁用 – aneuryzm

-1

$output如果條件應該是$output = "";

+0

不正確,它仍然可以工作。 – aneuryzm