'SQLSTATE[HY093]: Invalid parameter number

Résolu
Bonjour,

Je suis débutant en code et j'essaye de de recuperer les infos de mon formulaire de contact pour l'envoyer vers ma base de données mySQL (sous wampserver).

Seulement, au clic sur mon bouton "envoyer", j'ai les messages suivants qui s'affichent:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\wamp64\www\Site\Contact.php on line 64

( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\Site\Contact.php on line 64

J'ai regardé sur un tas de forum, mais je n'arrive pas à trouver mon erreur

Voici mon code:

<div class=Formulairecontact>
<form method="post"">
<input class="Prénom" type="text" name="prénom" id="prénom" placeholder="Prénom" required> <br><br>
<input type="text" name="nom" id="nom" placeholder="Nom" required><br><br>
<input type="number" name="tel" id="tel" placeholder="Tel" required><br><br>
<input type="email" name="email" id="email" placeholder="Email" required><br><br>
<div class="divmessage" align="center">
<textarea class="Message" type="text" name="message" id="message" placeholder="Ecrivez votre message" required></textarea> <br>
<input class="Envoyerformulaire" type="submit" name="envoyer" id="envoyer">
</div>
</form>
</div>

<?php

if(isset($_POST["envoyer"])){
extract($_POST);

if(!empty($prénom) && !empty($nom) && !empty($tel) && !empty($email) &&!empty($message)){

include "DataBase.php";
global $db;

$q=$db ->prepare("INSERT INTO messages (prénom,nom,email,tel,message) VALUES(:prénom,:nom,:email,:tel,:message)");
$q->execute([
"prénom"=>$prénom,
"nom"=>$nom,
"email"=>$email,
"tel"=>$tel,
"message"=>$message
]);
}
}
?>


Et le code de ma page DataBase.php
<?php

define("HOST","localhost");
define("DB_NAME", "Site projet info/cao");
define("USER","root");
define("PASS","");

try{
$db = new PDO("mysql:host=" . HOST. ";dbname=". DB_NAME, USER, PASS);
$db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION);
echo "Connect > OK !";
} catch(PDOException $e){
echo $e;
}
?>


Et la structure de ma table est la suivante:
Nom : messages
colonnes:
1: Idmessage
2: prénom
3: nom
4: email
5: tel
6: message

Est ce que vous sauriez m'aider ?

Un grand merci d'avance !

Configuration: Windows / Chrome 71.0.3578.98

1 réponse

  1. Modérateur
    Bonjour
    Commence par virer les accents dans tes noms de variable
    1. Mon dieu, c'était ca !
      J'aurai du y penser

      un grand merci !