2009-06-12 88 views
0

我有一個簡單的查詢,我不能爲我GET的使用壽命,打印出我的網頁上:什麼會導致我的MySQL查詢掛兩個結果後?

$results = mysql_query("SELECT * FROM andyasks ORDER BY date"); 
$test = mysql_fetch_array($results, MYSQL_BOTH); 
foreach ($test as $row){ 
    print($row[questions]); 
} 

這是什麼是輸出(不可預測,我的眼睛),只是每個的第一個字母表字段,僅用於前兩行。所以一個75行的表格x 5列應該顯示排列的75個「問題」,而是顯示「00WWFFAA00」,它是前兩行每個單元格的第一個字母。這是怎麼回事?

+0

你可以顯示andyasks的表格佈局嗎?它是否被索引? – mkb 2009-06-12 13:52:38

+0

就我所知,該代碼應該做的是獲取'andyasks'表中的所有行,然後在一個長字符串中打印出每行的'questions'字段的值。請注意,它應該是$ row ['questions'],但如果PHP不是可識別的常量,它會將問題轉換爲字符串。 – Blixt 2009-06-12 13:53:50

回答

5

試試這個。

$results = mysql_query("SELECT * FROM andyasks ORDER BY date"); 

while($row = mysql_fetch_array($results)) 
{ 
    print($row["questions"]); 
} 

的原因是,你只會做一個有

$test = mysql_fetch_array($results, MYSQL_BOTH); 

這就是爲什麼你需要把它在一個while循環獲取。它獲取一行,while循環將在沒有更多行時終止(因爲當沒有更多行時它返回false)。

4

只是爲了解釋什麼是你的代碼錯誤...

您的代碼只讀取第一行到$test變量。該數組包含兩列 - 按索引和名稱(這是MYSQL_BOTH的作用)。如果在循環之前插入print_r($test);它將轉儲數組的內容,以便您可以看到發生了什麼。

循環的作用是遍歷每列,並將其值作爲字符串提取到$row中。當您在包含字符串的變量上使用數組語法(即$row["questions"])時,PHP將在您選擇的索引處提取一個字符。由於"question"不是數字,因此它的計算結果爲0,這就是爲什麼您會得到每列的第一個字母。

ÓlafurWaage對於您要做的事情有正確的語法。

相關問題