2011-02-26 147 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