2013-07-03 8 views
2

1.) Pouvez-vous imbriquer une requête msqli dans une boucle while? 2. Si oui, pourquoi le PHP ci-dessous n'écrirait-il pas de données dans la table des précords?Requête mysqli dans la boucle WHILE

Si je répercute une variable de tableau $ build, elle s'affiche correctement, mais l'insert mysqli n'écrit rien dans la table de la base de données. Le code ne fait pas d'erreurs, alors qu'est-ce qui me manque?

$data = mysqli_query($con,"SELECT * FROM Cart WHERE Buyer_ID='$_SESSION[cid]' AND Cart_Date='$_SESSION[cdate]'"); 
while($build = mysqli_fetch_array($data)) 
{ 
//echo $build[idex]."<br>"; 
mysqli_query($con,"INSERT INTO precords (precord,Buyer_ID,Account,Purchase_Date,Item_Number,Item_Qty,Item_Title,Item_FPrice,Item_FFLFlag,ccpass) VALUES ('$build[idex]','$build[Buyer_ID]','$build[Cart_Date]','$build[Item_Number]','$build[Item_Qty]','$build[Item_Title]','$build[Item_FPrice]','$build[Item_FFLFlag]','N')"); 
}; 

Merci pour toute aide.

** P.S. - Ce code est destiné à déplacer certaines valeurs d'une variable TEMPORARY table/session, à une table d'enregistrement permanente, mais la boucle est nécessaire car il y a plus d'un produit dans le panier associé à l'utilisateur/session.

+0

Oui, vous pouvez le faire dans une boucle, mais vous n'avez pas besoin. Votre 'INSERT' utilise uniquement les valeurs de' $ build', donc vous pouvez juste faire 'INSERT INTO precords SELECT col1, col2, col3 ... FROM Panier WHERE Buyer_ID = ...' –

+2

Il y a beaucoup de raisons pour lesquelles cela peut échouer, Le fait que vous n'échappiez pas aux valeurs de '$ build', qui ne sont pas sûres d'insertion, même si elles proviennent de la base de données. Vous pourriez avoir des erreurs de syntaxe. Vous devriez vérifier 'mysqli_error()' pour voir ce qui n'a pas fonctionné, et finalement envisager de passer à des instructions préparées dans MySQLi. –

Répondre

1

oui vous pouvez l'utiliser dans une boucle et

vous voulez ajouter la fonction mysql_error() pour savoir ce qui ne va pas avec elle et essayer de le réparer ou en ajoutant l'erreur à la question que nous pouvons donc vous dire quoi faire

$data = mysqli_query($con,"SELECT * FROM Cart WHERE Buyer_ID='$_SESSION[cid]' AND Cart_Date='$_SESSION[cdate]'"); 
    while($build = mysqli_fetch_array($data)) 
    { 
    //echo $build[idex]."<br>"; 
    mysqli_query($con,"INSERT INTO precords 
    (precord,Buyer_ID,Account,Purchase_Date,Item_Number,Item_Qty,Item_Title,Item_FPrice,Item_FFLFlag,ccpass) 
    VALUES 
    ('$build[idex]','$build[Buyer_ID]','$build[Cart_Date]','$build[Item_Number]','$build[Item_Qty]','$build[Item_Title]','$build[Item_FPrice]','$build[Item_FFLFlag]','N') 
    ") or die (mysql_error()); 
     }; 
+0

Ajout du mysql_error mais il ne signale pas/affiche une erreur - ceci étant dit, un bloc de code suivant ne fonctionne plus alors le OR DIE semble être déclenché. Je vais essayer d'obtenir quelque chose pour résoudre l'erreur spécifique – DMSJax

+3

Parce que c'est 'mysqli' pas' mysql'. Vous avez besoin de 'mysqli_error ($ con)' à la place. –

+0

@MichaelBerkowski Je l'ai compris juste après avoir posté le commentaire. Merci – DMSJax

Questions connexes