2010-11-03 53 views
1

好吧,所以基本上我的代碼沒有按預期工作..所以我把它完全分開,甚至把這個查詢放在頁面頂部;在價值觀上嘗試過硬編碼,但仍然無法正常工作。這個特定的查詢應該返回5行數據到$武器數組,但它不工作。在SQL查詢中遇到問題...在PHP中(非常簡單的代碼)

$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); 

在DATABSE所以weapon_id是SMALLINT(8)或相當的東西,(確切長度IM不確定大氣壓)..並且它具有在表30點的行,weapon_id範圍從1-30

這個特殊的代碼片段運行時的回報:

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

我只是不明白它..在我的整個項目工程每一個其他查詢保存這一個。請幫忙?我也嘗試用> = < =運算符替換BETWEEN運算符,該運算符輸出相同的結果。

+0

你期望得到你的結果? – 2010-11-03 10:08:14

+0

你需要循環結果嗎? – 2010-11-03 10:09:15

回答

6

嘗試

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

,你需要這樣一個循環來看看的所有行。

+1

正在發佈相同的代碼!它正在按照你所說的去做;作爲數組檢索第一行 http://php.net/manual/en/function.mysql-fetch-array.php – Polsonby 2010-11-03 10:06:06

+0

對。 'mysql_fetch_array()'將__ row_作爲一個數組。 – 2010-11-03 10:07:28

+0

非常感謝您的快速回復。我無法相信我從來不知道這一點。你有我的不朽的感激之情。 – 2010-11-03 10:13:54

2

您只提取一行結果。您可以通過需要循環並收集所有的結果:

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

var_dump($weapons); 

mysql_fetch_array只取一行結果的時間,如圖所示的文件中。這意味着,例如,您可以處理需要更多內存的結果集,而不是允許您的腳本。

+0

-1爲複雜的方式! while(false!==(...))與while(...)相同 – Tokk 2010-11-04 22:59:30

+0

@Tokk不,它不是! 'while(...)'相當於while(false!=(...))',這意味着不同的東西。做'var_dump(false == array());'看到這個在行動。我同意這種保護措施不是必要的,但類型安全是一個很好的習慣。 – lonesomeday 2010-11-04 23:16:37

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); 
+0

非常感謝您的快速回復。我不能相信我從來不知道這一點。你有我的不朽的感激之情。 – 2010-11-03 10:14:43