2010-01-27 28 views
1

我有一個典型的數據庫查詢:消失使用後mysql_fetch_array()生成的數組?

$query = mysql_query('SELECT titulo,referencia FROM cursos WHERE tipo=1 AND estado=1'); 

,我可以把它轉換成一個數組並打印數據:

while ($results=mysql_fetch_array($query)): ?> 
echo $results['referencia']; 
// and so... 
endwhile; 

,但在某些情況下,我需要在另一部分打印相同數據該網頁,但結果$陣列似乎是空的(我用var_dump($results),我得到bool(false))。我打算用我學到的東西讀Create PHP array from MySQL column,但不應該mysql_fetch_array()創建一個數組?那麼,會發生什麼?

+0

你確定你的查詢是正確的並返回結果? – 2010-01-27 03:33:10

+0

是的,我第一次查詢數據是打印的。 – Tae 2010-01-27 03:41:34

回答

2

泰的行數,您$resultfalsewhile循環結束的原因是mysql_fetch_array回報false當它到達查詢集的結尾。 (見關於這一主題的PHP Docs)當你到達查詢結束設置$results設置爲falsewhile退出循環。如果你想保存以供日後陣列(數據庫行的結果),然後做的Chacha102建議和存儲每一行​​,因爲它是從數據庫中抽取。

$data = array(); 
while($results = mysql_fetch_array($query)) { 
    $data[] = $results; 
} 
foreach ($data as $result_row) { 
    echo $result_row['referencia']; 
    ... etc. 
} 
1

試試這個

while($results = mysql_fetch_array($query)) 
{ 
    $data[] = $results; 
} 

現在,所有的結果都在$data,你可以做任何你從那裏想。


正如Anthony所說,您可能想要確保實際上正在從查詢中檢索數據。檢查是否有任何結果由echo mysql_num_rows($query)返回。這應該給你你有

+0

感謝Chacha102,這是我應該使用,我會嘗試的方法,但我仍然不知道爲什麼用'mysql_fetch_array產生的陣列()'似乎消失了。 – Tae 2010-01-27 04:47:36