2010-08-10 6 views
1

Je le code suivant: (requête ajoutée)ressource de résultat MySQL après la première utilisation

$weight_table = mysql_query ("SELECT * FROM ".$prefix."weight ORDER BY wlimit DESC");  
foreach ($weight as $area => $weight) { 
     echo $weight; 

     while ($weight_row = mysql_fetch_array($weight_table)) { 
      print_r($weight_row); 
      $limit = $weight_row['wlimit']; 
      if ($weight < $limit) { 
     $weight_level[$count] = $weight_row; 
      } 
     } 
    } 
    print_r($weight_level); 

Où weight_table de $ est un résultat de la requête mysql et le poids $ est un tableau. Mon problème est que $ weight_table semble expirer après la première boucle while, de sorte que le tableau de poids $ est effectivement traité comme ayant un seul élément. C'est un problème! Quelqu'un peut-il suggérer pourquoi php oublierait un résultat mysql après la première utilisation?

+0

Je ne voulais pas suggérer cela. Je voulais simplement dire que ne pas obtenir le bon résultat était un problème. J'ai simplement supposé qu'il y avait un drapeau mal placé quelque part. – YsoL8

Répondre

2

La première itération à travers la boucle for, vous récupérez tous les enregistrements du jeu de résultats mysql. Votre boucle while interne s'exécutera jusqu'à ce que toutes les lignes aient disparu. Combien de lignes voulez-vous tirer?

De plus, vous réutilisez le poids qui est une mauvaise idée et peut causer des effets secondaires.

foreach ($weight as $area => $wt) { 
    echo $wt; 

    while ($weight_row = mysql_fetch_array($weight_table)) { 
     print_r($weight_row); 
     $limit = $weight_row['wlimit']; 
     if ($wt < $limit) { 
     $weight_level[$count] = $weight_row; 
     } 
    } 

    mysql_data_seek($weight_table,0); 
} 
print_r($weight_level); 
+0

Je veux tout tirer, une fois pour chaque valeur du tableau de poids $. Il semble abandonner après la première valeur. Aussi, changé la variable de poids $ comme ci-dessus. – YsoL8

+0

Y at-il quelque chose dans l'installation de php qui pourrait affecter cela? Je pense que ça marchait il y a un moment. – YsoL8

+0

@ YsoL8: Votre requête MySQL (et le résultat) vont bien? – fabrik

1

Vous remplacez le tableau $weight dans la déclaration foreach. Utilisez plutôt $area => $_weight.

0
while ($weight_row = mysql_fetch_array($weight_table)) { 
    print_r($weight_row); 
    foreach ($weights as $area => $weight) { 
     echo $weight; 
     $limit = $weight_row['wlimit']; 
     if ($weight < $limit) { 
      $weight_level[$count] = $weight_row; 
     } 
    } 
} 
print_r($weight_level); 

utiliser le tableau de poids $ comme poids $

+0

La commutation des boucles while et foreach déforme le contenu de $ weight_level – YsoL8

0
foreach ($weight as $area => $weight) { 

Vous écrasez ce qui était dans votre tableau $height, ce qui est pourquoi il arrive à son terme après la première course à travers la boucle. Essayez d'utiliser un autre nom de variable pour l'un ou l'autre.

Questions connexes