Domaines enregistrés : 456 | ![]() |
Désactiver le fond d'écran | ![]() |
![]()
![]() |
Vous n'êtes pas identifié(e).
Lorsque vous exposez un problème que vous rencontrez sur votre site, n’omettez pas de bien préciser l’adresse de la page (URL) concernée.
Ouvrez un nouveau sujet de discussion pour poser une question, n'utilisez pas une discussion déjà ouverte si votre problème est différent.
Lorsque votre sujet est résolu, indiquez-le en cliquant sur le lien "Passer le sujet en résolu".
Pages :: 1
Bonjour,
J'ai créé une requête préparée insert qui ne fonctionne pas :
try {
$connexion = new PDO('mysql:host='.$host.';dbname='.$base, $user, $pass);
$connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$prepared = $connexion->prepare
(
"INSERT INTO wp3_achats (id,code_article, product_name,createdon,qt,pa,latitude,longitude,id_magasin,utilisateur )
VALUES
(
:id ,
:codearticle ,
:created ,
:qt ,
:pa ,
:latitude ,
:longitude ,
:idmagasin ,
:utilisateur
)"
);
$prepared->bindParam(':id' , $_GET['id']);
$prepared->bindParam(':codearticle', $_GET['code_article']);
$prepared->bindParam(':created', $_GET['createdon']);
$prepared->bindParam(':qt', $_GET['qt']);
$prepared->bindParam(':pa', $_GET['pa']);
$prepared->bindParam(':latitude', $_GET['latitude']);
$prepared->bindParam(':longitude', $_GET['longitude']);
$prepared->bindParam(':idmagasin', $_GET['id_magasin']);
$prepared->bindParam(':utilisateur', $_GET['utilisateur']);
$prepared->execute();
}
catch(PDOException $x) { die("Secured"); }
$prepared = null;
$connection = null;
Malgré tous mes essais, elle ne fonctionne pas.
J'ai une requête équivalente en injection directe qui fonctionne
try {
$dbh = new PDO('mysql:host='.$host.';dbname='.$base, $user, $pass);
$sql = "INSERT INTO wp3_achats (id,code_article,createdon,qt,pa,latitude,longitude,id_magasin,utilisateur)
VALUES
(
'$_POST[id]' ,
'$_POST[code_article]' ,
'$_POST[createdon]' ,
'$_POST[qt]' ,
'$_POST[pa]' ,
'$_POST[latitude]' ,
'$_POST[longitude]' ,
'$_POST[id_magasin]' ,
'$_POST[utilisateur]'
)";
if ($dbh->query($sql) === TRUE) { echo "New record created successfully";}
else
{
echo "Error: " . $sql . "<br>" . $dbh->error;
}
}
catch (PDOException $error) {die("Erreur de connexion : " . $error->getMessage() );}
$dbh->close();
Pouvez-vous m'aider ?
Cordialement
Philippe
Hors ligne
Bonjour,
Dans la première requête, vous avez 9 éléments préparés alors que vous avez 10 propriétés, il vous manque "product_name" qui n'est pas préparé ni associé (bindé).
Dans le catch de l'erreur, au lieu d'afficher le mot "Secured", vous pouvez afficher le message d'erreur comme dans votre requête non préparée. Vous auriez eu un message d'erreur vous indiquant une incohérence entre le nombre de propriétés et les valeurs préparées :
catch(Exception $x)
{
die("Erreur MySQL n° ".$x->getCode()." : ".$x->getMessage());
}
![]() | Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, utilisez alors dans ce cas le formulaire de contact ou alors le téléphone. |
Hors ligne
Encore une fois merci.
Je ne voyais pas ce détail et je tournais en rond.
J'avais aussi utilisé $_GET au lieu de $_POST
Cordialement
Hors ligne
Je vous en prie, passez un bon samedi soir.
Encore une fois merci.
Je ne voyais pas ce détail et je tournais en rond.
J'avais aussi utilisé $_GET au lieu de $_POSTt
![]() | Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, utilisez alors dans ce cas le formulaire de contact ou alors le téléphone. |
Hors ligne
Pages :: 1
[ Générées en 0.029 secondes, 9 requêtes exécutées - Utilisation de la mémoire : 634.99 Kio (pic d'utilisation : 682.9 Kio) ]