Page 1 sur 1

probleme INSERT

Posté : 22 févr. 2023, 12:53
par nestor94
$pdostat = $bdd->prepare("SELECT nom_pays FROM pays LEFT JOIN membres ON pays.pos_x_map = membres.pos_x AND pays.pos_y_map = membres.pos_y WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession  = $pdostat->fetch();    
if (!empty($membreSession)) { 
$nom_pays = $membreSession['nom_pays'];
}
$annonce= "UNE CENTRALE NUCLEAIRE A ÉTÉ NATIONALISÉE";
$sql= "INSERT INTO WNN (annonce, lieu) VALUES ('$annonce',  'A $nom_pays')";
$prep =  $bdd->prepare($sql);
$prep->bindvalue(':annonce',$annonce,PDO::PARAM_STR);
$prep->bindvalue(':lieu',$nom_pays,PDO::PARAM_STR);
$prep->execute();
Invalid parameter number: number of bound variables does not match number of tokens in /home/clients/78f15c36

Je ne saisis pas d'ou vient l'erreur

Re: probleme INSERT

Posté : 22 févr. 2023, 12:56
par ynx
Ta requête n'est pas préparée correctement, il faut utiliser des marqueurs nommés dans ta requête (:annonce, :lieu) et pas directement les variables php ($annonce, $nom_pays).
Voir https://www.php.net/manual/fr/pdo.prepare.php

Re: probleme INSERT

Posté : 22 févr. 2023, 19:30
par nestor94
J'ai le meme message erreur en modifiant ainsi
$annonce= "UNE CENTRALE NUCLEAIRE A ÉTÉ NATIONALISÉE";
$sql= "INSERT INTO WNN (annonce, lieu) VALUES (:annonce, A:nom_pays)";
$prep =  $bdd->prepare($sql);
$prep->bindvalue(':annonce',$annonce,PDO::PARAM_STR);
$prep->bindvalue(':lieu',$nom_pays,PDO::PARAM_STR);
$prep->execute();

Re: probleme INSERT

Posté : 22 févr. 2023, 19:36
par or 1
$sql= "INSERT INTO WNN (annonce, lieu) VALUES (:annonce, A:nom_pays)";
il y a du mieux mais un caractère en trop.

Re: probleme INSERT

Posté : 22 févr. 2023, 19:37
par nestor94
oups, voilà qui est mieux !
$annonce= "UNE CENTRALE NUCLEAIRE A ÉTÉ NATIONALISÉE À";
$sql= "INSERT INTO WNN (annonce, lieu) VALUES (:annonce, :lieu)";
$prep =  $bdd->prepare($sql);
$prep->bindvalue(':annonce',$annonce,PDO::PARAM_STR);
$prep->bindvalue(':lieu',$nom_pays,PDO::PARAM_STR);

$prep->execute();