Probleme requete préparée PDO

Par locohigh, il y a 12 ans


Base de données MySQL

Bonjour,

J'ai le message d'erreur suivant : "Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound' in..."

Impossible de trouver d'où vient l'erreur !

Quelqu'un aurait une idée ??

Merci de votre aide ! :-p

Voici mon code :

try{
$DB = new PDO('mysql:host=localhost;dbname=formationsql','root','');
$DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}

catch(PDOException $e){
echo "base de données non disponible";
}

if(!empty(\_POST)){ extract(_POST);
valid = true; if(!preg\_match("/^[a-z0-9\-\_.]+\@[a-z0-9\-\_.]+\.[a-z]{2,3}/i", $email)){
$valid = false;
echo "email pas valide";
}

if($valid){

extract($_POST);
$sql = $DB->prepare("INSERT INTO utilisateurs(nom,intitule,categorie,email,site,fichier,message) VALUES(:nom, :intitule, :categorie, :email, :site, :fichier, :message)");
$sql->execute();

echo "<pre>";
print_r($d);
echo "</pre>";

}

}

2 réponses

Benjamin Derepas, il y a 12 ans

eu ... tu n'aurais pas oublié de renseigner les valeurs nom, intitule, categorie etc par hasard ?

$sql=$DB->execute(array(':nom' => 'mon nom', ':categorie' => 'redma_categorie'));
locohigh, il y a 12 ans

C'est bon j'ai trouvé d'où venait l'erreur... Tu n'avais pas tort benjamin mais j'ai une méthode peut-être plus claire :

try{
$DB = new PDO('mysql:host=localhost;dbname=formationsql','root','');
$DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}

catch(PDOException $e){
echo "base de données non disponible";
}

if(!empty(\_POST)){ extract(_POST);
valid = true; if(!preg\_match("/^[a-z0-9\-\_.]+\@[a-z0-9\-\_.]+\.[a-z]{2,3}/i", $email)){
$valid = false;
echo "email pas valide";
}

if($valid){

extract(\_POST); $d = array( 'nom' => $nom, 'intitule' => $intitule, 'categorie' => $categorie, 'email' => $email, 'site' => $site, 'fichier' => $fichier, 'message' => $message ); $sql = $DB->prepare("INSERT INTO utilisateurs(nom,intitule,categorie,email,site,fichier,message) VALUES (:nom, :intitule, :categorie, :email, :site, :fichier, :message)"); $sql->execute(d);

}

}