2011-02-26 105 views
1

我有一個腳本,我想從數據庫中返回5個具有相同類別的值,但它只返回一個值。有任何想法嗎?從同一行中選擇多個值?

這裏的腳本:

$result = mysql_query("SELECT Category FROM GameData 
     WHERE Title=\"$title\" "); 
//returns category to search in next select 
    $row= mysql_fetch_array($result); 
    $results = mysql_query("SELECT Title FROM GameData 
    WHERE Category=\"$row[0]\" LIMIT 5 "); 
    $rows= mysql_fetch_array($results); 
    print_r($rows); //returns $title from first select query 

我是新來的數據庫和MySQL所以任何幫助,將不勝感激。

+1

我建議你使用PHP PDO而不是mysql_x。它更新,提供數據庫抽象和準備好的語句,可以防止sql注入 – CJD 2011-02-26 17:23:56

+0

不幸的是,如果您對數據庫不熟悉,那麼您的代碼效率不高,請從正確的方式開始學習。使用連接的。 – mailo 2011-02-26 17:27:10

回答

1

mysql_fetch_array將只取一個一行:如果你想獲取幾行,你必須打電話mysql_fetch_array幾次 - 在一個循環中,一般。


對於幾個例子,你可以看看its manual page;但是,你的情況,你可能會想使用這樣的:

$results = mysql_query("SELECT Title FROM GameData 
    WHERE Category='...' LIMIT 5 "); 
while ($row = mysql_fetch_array($results, MYSQL_ASSOC)) { 
    // work with $row['Title'] 
} 
3

你必須遍歷所有的結果:mysql_fetch_array回報一行結果,所以你必須多次調用它:

while($row = mysql_fetch_array($results)) { 
    // here process ONE row 
} 
+0

謝謝了。認爲它可能是一個循環的東西,但沒有在for循環中使用任何循環,所以不知道要使用什麼。再次感謝 :) – Matt 2011-02-26 18:34:20

4

mysql_fetch_array只是取一個呼叫使用循環一行獲取多個記錄

while($row= mysql_fetch_array($results)) 
{ 

    print_r($row); //returns $title from first select query 
} 
1

你應該爲了弄好使用下面的查詢。

SELECT `Title` FROM GameData 
LEFT JOIN 
Category ON Category.Id = GameData.Category 
WHERE Category.Title = "$title" LIMIT 5 

我假設類別有列ID。
我建議您瞭解JOINS
此外,您可能需要將類別重命名爲Category_Id,然後拖放字母大寫,因此類別將變爲category_id

相關問題