2015-03-26 5 views
0

Je le code (voir ci-dessous)instruction d'insertion mysql dans une instruction while ajoute seulement 1 enregistrement

$sql = "SELECT * FROM records"; 
$result = mysqli_query($this->db,$sql); 

while($row = mysqli_fetch_assoc($result)){ 
    $itemid = $row['id']; 
    $itemname = $row['itemname']; 
    $itemdesc = $row['itemdesc']; 
    $brand = $row['brand']; 
    $serialno = $row['serialno']; 
    $nostock = $row['nostock']; 
    $price = $row['price']; 
    $onsale = $row['onsale']; 
    $poster = $row['poster']; 
    $thedate = $row['thedate']; 

    $sql = "INSERT INTO backupp SET id='$itemid', itemname='$itemname', itemdesc='$itemdesc', brand='$brand', serialno='$serialno', nostock='$nostock', price='$price', onsale='$onsale', poster='$poster', thedate='$thedate'"; 
    $result = mysqli_query($this->db,$sql) or die(mysqli_error($this->db)); 
    return $result; 
} 

comme vous pouvez le voir sur les codes ci-dessus, il va d'abord tirer toutes les données de la table db nommées " enregistrements "et ensuite mettre chaque ligne dans la variable correspondante, puis insérer les données stockées (les données qui ont été tirées du nom de table db" enregistrements "et stockées sur la variable correspondante) à la table db nommée" backupp ". Maintenant, le problème est, il ajoute seulement un enregistrement à la sauvegarde (l'enregistrement qui a été tiré en premier) qui soi-disant il devrait ajouter tout l'enregistrement tiré des enregistrements de table db nommés à la table db nommé sauvegarde. Pourquoi?? Toutes suggestions, recommandations, indices et idées seraient grandement appréciés. Je vous remercie! PS: c'est comme exporter et importer à l'autre tableau avec la même structure mais j'ai ma propre raison pourquoi je veux le faire de cette façon et suppose que j'ai déjà connecté avec succès à une base de données ($ this-> db) appelée "inventaire "et il y a un nom de table db comme" records "et" backupp "avec la même structure.

+0

s'il vous plaît lire quelques tutoriels à jour PHP, ou quelques tutoriels sur la programmation – Joshua

Répondre

0

changer votre code dans ce (voir ci-dessous).

$sql = "SELECT * FROM records"; 
$result = mysqli_query($this->db,$sql); 
$x = 0; 
while($row = mysqli_fetch_assoc($result)){ 
$itemid = $row['id']; 
$itemname = $row['itemname']; 
$itemdesc = $row['itemdesc']; 
$brand = $row['brand']; 
$serialno = $row['serialno']; 
$nostock = $row['nostock']; 
$price = $row['price']; 
$onsale = $row['onsale']; 
$poster = $row['poster']; 
$thedate = $row['thedate']; 

$sql = "INSERT INTO backupp SET id='$itemid', itemname='$itemname', itemdesc='$itemdesc', brand='$brand', serialno='$serialno', nostock='$nostock', price='$price', onsale='$onsale', poster='$poster', thedate='$thedate'"; 
$result = mysqli_query($this->db,$sql) or die(mysqli_error($this->db)); 

$x++; 
} 
+0

wow! Je vous remercie. ce travail aime le charme !!! :) –

+0

Il n'y a pas de différence dans ce code en plus d'un faux compteur et l'instruction de retour est supprimée. Il n'y a pas de raison pour ce compteur ... – javajavajava

3

Vous avez une instruction return dans la boucle while qui provoque sa sortie après une itération.

Supprimez la ligne return $result; et cela devrait fonctionner.

+1

encore de travail ne marche pas –

6

Et vous pouvez facilement sauvegarder même table ainsi: INSERT INTO backupp SELECT * FROM records

+0

des thats refroidissent. mais qu'en est-il seulement de la colonne sélectionnée? –

+2

Vous pouvez nommer les colonnes aussi .. 'INSERT INTO backupp (nom de l'article, itemdesc) SELECT nom de l'article, itemdesc FROM enregistrements' .. bien sûr les noms peuvent être différents dans chaque table .. –

+0

merci pour la réponse :) –