好吧基本上我的代码没有按预期工作..所以我把它完全分开,甚至把这个查询放在页面顶部;尝试过硬编码,但仍无法正常工作。这个特殊的查询应该返回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运算符,它会输出相同的结果。
答案 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);