在SQL中遇到SQL查询问题...(非常简单的代码)

时间:2010-11-03 10:00:37

标签: php mysql

好吧基本上我的代码没有按预期工作..所以我把它完全分开,甚至把这个查询放在页面顶部;尝试过硬编码,但仍无法正常工作。这个特殊的查询应该返回5行数据到$ weapon数组,但它不起作用。

$weapons_sql = "SELECT weapon_id, weapon_name, weapon_strength FROM Weapon_Info WHERE weapon_id BETWEEN 1 AND 5";
$weapons_query = mysql_query($weapons_sql);
$weapons = mysql_fetch_array($weapons_query);


print_r($weapons);

所以数据库中的weapon_id是一个smallint(8)或更确切的东西,(确切长度我不确定atm)..它在表中有30行,weapon_id范围从1-30

运行时此特定代码段返回:

Array ( [0] => 1 [weapon_id] => 1 [1] => Humvee [weapon_name] => Humvee [2] => 100 [weapon_strength] => 100 )

我只是不明白..我的整个项目中的每个其他查询都可以保存。请帮忙?我也尝试用> =< =运算符替换BETWEEN运算符,它会输出相同的结果。

3 个答案:

答案 0 :(得分:6)

while($weapons = mysql_fetch_array($weapons_query)){
    print_r($weapons);
}

你需要一个这样的循环来查看所有行。

答案 1 :(得分:2)

您只获取一行结果。您需要循环并收集所有结果:

while(false !== ($row = mysql_fetch_array($weapons_query))) {
    $weapons[] = $row;
}

var_dump($weapons);

mysql_fetch_array一次只能获取一行结果,如文档中所示。这意味着,例如,您可以处理需要比允许脚本更多内存的结果集。

答案 2 :(得分:1)

mysql_fetch_array只返回一行。您想继续获取数组,直到您拥有所有行:

$weapons_sql = "SELECT weapon_id, weapon_name, weapon_strength FROM Weapon_Info WHERE weapon_id BETWEEN 1 AND 5";
$weapons_query = mysql_query($weapons_sql);
$weapons = array();
while ($weapon = mysql_fetch_array($weapons_query))
{
    $weapons[] = $weapon;
}
print_r($weapons);