Problème INSERT INTO PHP5
Résolu
delaville81
Messages postés
195
Date d'inscription
Statut
Membre
Dernière intervention
-
delaville81 Messages postés 195 Date d'inscription Statut Membre Dernière intervention -
delaville81 Messages postés 195 Date d'inscription Statut Membre Dernière intervention -
Chers confrères,
Je solicite votre aide pour m'aider sur un problème dans ma requête.
Je passe bien dans la boucle, la récupe des données de passe bien, mais ensuite, la requête d'insert ne se passe pas.
Lorsque je la commente, mon echo fonctionne bien.
////////////////////////////////////////
Merci d'avance pour votre aide
Je solicite votre aide pour m'aider sur un problème dans ma requête.
Je passe bien dans la boucle, la récupe des données de passe bien, mais ensuite, la requête d'insert ne se passe pas.
Lorsque je la commente, mon echo fonctionne bien.
////////////////////////////////////////
///////////////////////////////////////
//récup des champs
for($i=0;$i<count($_POST['libelle']);$i++)
{
$datea = $_POST['datea'][$i];
$libelle = $_POST['libelle'][$i];
$debit = $_POST['debit'][$i];
$credit = $_POST['credit'][$i];
$sql = "INSERT INTO compta (date,libelle,debit,credit)
values (".$pdo->quote($datea).",
".$pdo->quote($libelle).",
".$pdo->quote($debit).",
".$pdo->quote($credit)."
)";
echo '<br />'.$datea.' - '.$libelle.' - '.$debit.' - '.$credit.'<br />';
//exécution de l'insert
$nb = $pdo->exec($sql);
}
Merci d'avance pour votre aide
A voir également:
- Problème INSERT INTO PHP5
- Touche insert - Guide
- Disk boot failure insert system disk and press enter - Guide
- Insert boot media in selected boot device and press a key ✓ - Forum Windows 10
- Activer touche insert sur ASUS UX32A - Forum Clavier
- Monitor will go into standby mode traduction français ✓ - Forum Matériel & Système
12 réponses
Bonjour
Lorsque je la commente, mon echo fonctionne bien.
C'est d'autant plus étonnant que ta requête n'est exécutée qu'après le echo ...
Tu utilises $pdo->quote, ce qui est une très mauvaise idée, c'est déconseillé dans la doc même de PDO. Tu ferais mieux d'utiliser une requête préparée, ça t'éviterait d'oublier les quotes autour de tes values :
Lorsque je la commente, mon echo fonctionne bien.
C'est d'autant plus étonnant que ta requête n'est exécutée qu'après le echo ...
Tu utilises $pdo->quote, ce qui est une très mauvaise idée, c'est déconseillé dans la doc même de PDO. Tu ferais mieux d'utiliser une requête préparée, ça t'éviterait d'oublier les quotes autour de tes values :
$sql = "INSERT INTO compta (date,libelle,debit,credit)
values (:datea,:libelle,:debit,:credit)";
$stmt=$pdo->prepare($sql);
echo '<br />'.$datea.' - '.$libelle.' - '.$debit.' - '.$credit.'<br />';
//exécution de l'insert
$nb = $stmt->execute(array(':datea'=>$datea, ':libelle'=>$libelle, ':debit'=>$debit, ':credit'=>$credit));
Merci de ta réponse le père,
Cependant, même avec ta requête ça ne fonctionne pas.
Aurais tu une autre suggestion ?
Merci d'avance
Cependant, même avec ta requête ça ne fonctionne pas.
Aurais tu une autre suggestion ?
Merci d'avance
Le père,
Je n'ai aucun message d'erreur.
Le echo ne s'affiche pas non plus.
J'ai testé en mettant le requête et le prépare avant la boucle, c'est la même chose.
Je n'ai aucun message d'erreur.
Le echo ne s'affiche pas non plus.
J'ai testé en mettant le requête et le prépare avant la boucle, c'est la même chose.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour voir, par où tu passes, modifie le début de ta boucle :
...
$sql = "INSERT INTO compta (date,libelle,debit,credit)
values (:datea,:libelle,:debit,:credit)";
echo 'coucou1<br />';
$stmt=$pdo->prepare($sql);
echo 'coucou2<br />';
for($i=0;$i<count($_POST['libelle']);$i++)
{
echo 'coucou3<br />';
$datea = $_POST['datea'][$i];
...
Mon fichier connexion.php
Pas la peine de cacher mes identifiants je suis sur MAMP
Pas la peine de cacher mes identifiants je suis sur MAMP
<?php
$hote = 'localhost';
$bdd = 'asso';
$util = 'root';
$mdp = 'root';
try{
$pdo = new PDO('mysql:host ='.$hote.';dbname='.$bdd,$util,$mdp);
$pdo->exec("SET CHARACTER SET utf8");
//echo "ok";
}
catch(PDOException $e){
echo 'Connexion échouée : '.$e->getMessage();
exit();
}
?>
Ça a l'air OK... Alors il y a sans doute un problème avec la requête ( table ou champ inexistant...)
$stmt=$pdo->prepare($sql);
if (!$stmt) {
echo "\nPDO::errorInfo():\n";
print_r($pdo->errorInfo());
}
Il y a bien un include "connexion.php" au début du script ?
remplace le echo 'coucou1<br />'; par
remplace le echo 'coucou1<br />'; par
if (isset($pdo)) print_r ($pdo); else echo 'pdo non défini';
Je devais rêver, j'avais oublié l'appel au fichier de connexion.
Je n'y avais pas penser car dans mon teste précédent, j'exécuter mon script dans la page du formulaire
Désolé de t'avoir faut perdre ton temps pour une erreur de ma part, mais ça m'a permis d'apprendre que le $pdo->quote est déconseillé et que le requête préparées c'est mieux.
Merci pour ton aide précieuse
Je n'y avais pas penser car dans mon teste précédent, j'exécuter mon script dans la page du formulaire
Désolé de t'avoir faut perdre ton temps pour une erreur de ma part, mais ça m'a permis d'apprendre que le $pdo->quote est déconseillé et que le requête préparées c'est mieux.
Merci pour ton aide précieuse