2010-07-10 10 views
0

J'ai le code suivant qui devrait être inséré dans la base de données x nombre de fois en fonction de la valeur donnée $ row ['max'] mais seulement 1 est inséré. Quelqu'un peut-il s'il vous plaît me montrer l'erreur de mes manières! Merci.La boucle du compteur PHP ne fonctionne pas

$query = "SELECT * FROM challenges WHERE rate='fixed'"; 
$query_result = mysql_query($query); 

while ($row = mysql_fetch_array($query_result)) { 
    $spawn_time = preg_split('/,/', $row['time']); 
    $spawn_time_results = count($spawn_time); 
    $limitno = $row['max']; 
    $spawn_counter = 0; 

    while ($spawn_counter <= $spawn_time_results) { 
     if ($spawn_time[$spawn_counter] == date("i")) { 
      $time = time(); 
      $insert_instance = "INSERT INTO instances (id,defeated,time) 
           VALUES ('{$row['id']}',0,{$time})"; 
      $insert_result = mysql_query($insert_instance); 
     } 
     $spawn_counter++; 
    } 
} 
+0

Un message d'erreur? Essayez de remplacer '$ insert_result = mysql_query ($ insert_instance);' avec $ insert_result = mysql_query ($ insert_instance) ou die (mysql_error()); ' – svens

+0

Comment ressemble votre base de données? Peut-être qu'une colonne est unique. L'identifiant de colonne est-il dans les instances une chaîne ou un nombre? – Codler

Répondre

1

Vous ne jamais utiliser réellement $ limitno, donc il n'a pas d'effet ...

PS: s'il vous plaît utiliser exploser au lieu de preg_split et au lieu de cela en boucle.

+0

changé pour un comme suggéré. Cela m'a pris un moment comme jamais utilisé auparavant mais était assez simple après avoir lu. Fonctionne comme il se doit maintenant avec un autre réglage. Merci – anadin

0

Peut-être qu'il devrait être

$insert_instance="INSERT INTO instances (id,defeated,time) 
VALUES ({$row['id']},0,{$time})"; 
+0

ne pense pas qu'il ya quelque chose de mal avec l'insertion réelle que 1 enregistrement est entré correctement, il a juste fait une boucle. Par exemple, si la valeur de $ limitno est 8 alors il devrait boucler l'insertion 8 fois mais il n'en fait qu'une. – anadin

+0

J'ai essayé de changer l'insert comme vous l'avez suggéré Codler mais pas de joie. Merci. – anadin