2010-11-03 5 views
1

Ok, donc fondamentalement mon code ne fonctionne pas comme prévu .. donc je l'ai pris complètement à part et même placé cette requête en haut de la page; essayé hardcoding dans les valeurs et son ne fonctionne toujours pas. Cette requête particulière est supposée renvoyer 5 lignes de données au tableau $ weapons, mais cela ne fonctionne pas.Avoir un problème avec la requête SQL ... en PHP (code très simple)

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

si weapon_id dans la base de donnée est un smallint (8) ou quelque chose plutôt, (longueur exacte im sûr de atm) .. et il a 30 lignes de la table, weapon_id allant de 1 à 30

cet extrait particulier lors du retour de courir:

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

Je ne comprends pas .. toutes les autres requêtes dans mes œuvres entières du projet enregistrer celui-ci. S'il vous plaît aider? J'ai également essayé de remplacer l'opérateur BETWEEN par> = < = opérateurs, qui produit les mêmes résultats.

+0

Qu'est-ce que vous espérez trouver dans les résultats? –

+0

avez-vous besoin de boucle sur les résultats en tant que? –

Répondre

6

essayer

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

vous avez besoin d'une boucle comme celui-ci pour voir toutes les lignes.

+1

Était en train de publier le même code! Il fait exactement ce que vous lui avez dit de faire; Récupérer la première ligne sous la forme d'un tableau http://php.net/manual/fr/function.mysql-fetch-array.php – Polsonby

+0

Droite. 'mysql_fetch_array()' récupère _une ligne_ en tant que tableau. –

+0

Merci beaucoup pour vos réponses rapides. Je ne peux pas croire que je n'ai jamais su cela. Vous avez ma gratitude éternelle. –

2

Vous ne récupérez qu'une seule ligne des résultats. Vous devez faire une boucle à travers et recueillir tous les résultats:

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

var_dump($weapons); 

mysql_fetch_array récupère une seule ligne de résultats à la fois, comme indiqué dans la documentation. Cela signifie, par exemple, que vous pouvez gérer des ensembles de résultats demandant plus de mémoire que votre script n'est autorisé.

+0

-1 pour la manière compliquée! while (false! == (...)) est le même que while (...) – Tokk

+0

@Tokk Non ce n'est pas! 'while (...)' est équivalent à 'while (false! = (...))', ce qui signifie quelque chose de différent. Faites 'var_dump (false == array());' pour voir ceci en action. Je suis d'accord que la protection n'est pas * nécessaire * ici, mais la sécurité du type est une bonne habitude à adopter. – lonesomeday

1

mysql_fetch_array renvoie une seule ligne. Vous voulez continuer à récupérer des tableaux jusqu'à ce que vous ayez toutes les lignes:

$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

Merci à tous pour vos réponses rapides. Je ne peux pas croire que je ne l'ai jamais su. Vous avez ma gratitude éternelle. –