SQLSTATE[HY093]: Invalid parameter number: parameter was not de
Résolu
chabinot
Messages postés
391
Statut
Membre
-
chabinot Messages postés 391 Statut Membre -
chabinot Messages postés 391 Statut Membre -
Bonjour,
Voici les sources :
1 - profile.php
2 - Source du formulaire :
3 - Source de la classe Database.php
Image de la table users

Et enfin le message que j'ai quand je lance le formulaire :
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in D:\serveur\www\boom\class\Database.php:29 Stack trace: #0 D:\serveur\www\boom\class\Database.php(29): PDOStatement->execute(Array) #1 D:\serveur\www\boom\profile.php(46): Database->prepare('UPDATE users\r\n ...', Array) #2 {main} thrown in D:\serveur\www\boom\class\Database.php on line 29
J'ai beau retourné le problème dans tous les sens, je ne trouve pas l'erreur que j'ai pu faire.
Si vous avez une idée ?
Cordialement
Voici les sources :
1 - profile.php
// Traitement du formulaire soumis if (isset($_POST['update'])) { // Tous les champs ont été remplis ? if (not_empty(['name', 'city', 'country', 'sex', ])) { extract($_POST); $req = $bdd->prepare( "UPDATE users SET name = :name, city = :city, country = :country, sex = :sex, twitter = :twitter, github = :github, available_for_hiring = :available_for_hiring, bio = :bio WHERE id = :id", ['name' => $name, 'city' => $city, 'country => $country', 'sex' => $sex, 'twitter' => $twitter, 'github' => $github, 'available_for_hiring' => !empty($available_for_hiring) ? '1' : '0', 'bio' => $bio, 'id' => get_session('user_id') ]); set_flash("Votre profil a été mis à jour", "success"); } else { $error = $errors->setError("Veuillez remplir tous les champs marqués d'un (*)."); save_input_data(); } }
2 - Source du formulaire :
<form data-parsley-validate method="post" autocomplete="off"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="name">Nom <span class="text-danger">*</span></label> <input type="text" name="name" id="name" class="form-control" placeholder="Votre nom" required="required"> </div> </div> <div class="col-md-6"> <div class="form-group"> <label for="city">Ville <span class="text-danger">*</span></label> <input type="text" name="city" id="city" class="form-control" placeholder="Ville" required="required"> </div> </div> </div> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="country">Pays <span class="text-danger">*</span></label> <input type="text" name="country" id="country" class="form-control" placeholder="Pays" required="required"> </div> </div> <div class="col-md-6"> <div class="form-group"> <label for="sex">Genre <span class="text-danger">*</span></label> <select name="sex" id="sex" class="form-control" required="required"> <option value="H">Homme</option> <option value="F">Femme</option> </select> </div> </div> </div> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="twitter">Twitter</label> <input type="text" name="twitter" id="twitter" class="form-control"> </div> </div> <div class="col-md-6"> <div class="form-group"> <label for="github">Github</label> <input type="text" name="github" id="github" class="form-control"> </div> </div> </div> <div class="row"> <div class="col-md-12"> <div class="form-group"> <label for="available_for_hiring"></label> <input type="checkbox" name="available_for_hiring" id="available_for_hiring"> Disponible pour emploi? </div> </div> </div> <div class="row"> <div class="col-md-12"> <div class="form-group"> <label for="bio">Biographie <span class="text-danger">*</span></label> <textarea name="bio" id="bio" cols="30" rows="10" class="form-control" placeholder="Je suis amoureux de la programmation..." required="required"></textarea> </div> </div> </div> <input type="submit" class="btn btn-primary" value="Valider" name="update"> </form>
3 - Source de la classe Database.php
<?php class Database { private $db_host = 'localhost'; private $db_name = 'boom'; private $db_port = 3309; private $db_charset = 'utf8'; private $db_user = 'root'; private $db_password = ''; private $dsn; private $pdo; private $error; public function __construct() { $this->dsn = "mysql:host={$this->db_host};dbname={$this->db_name};port={$this->db_port};charset={$this->db_charset}"; try { $this->pdo = new PDO($this->dsn, $this->db_user, $this->db_password); $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo $this->error = 'Erreur: ' . $e->getMessage(); } } public function prepare(String $stmt, Array $fields = []) { $req = $this->pdo->prepare($stmt); var_dump($fields); $req->execute($fields); return $req; } public function is_already_in_use(String $field, String $value, String $table):bool { $req = $this->pdo->prepare("SELECT id FROM $table WHERE $field = ?"); $req->execute([$value]); $count = $req->rowCount(); $req->closeCursor(); return $count; } }
Image de la table users
Et enfin le message que j'ai quand je lance le formulaire :
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in D:\serveur\www\boom\class\Database.php:29 Stack trace: #0 D:\serveur\www\boom\class\Database.php(29): PDOStatement->execute(Array) #1 D:\serveur\www\boom\profile.php(46): Database->prepare('UPDATE users\r\n ...', Array) #2 {main} thrown in D:\serveur\www\boom\class\Database.php on line 29
J'ai beau retourné le problème dans tous les sens, je ne trouve pas l'erreur que j'ai pu faire.
Si vous avez une idée ?
Cordialement
A voir également:
- Uncaught pdoexception: sqlstate[hy093]: invalid parameter number: parameter was not defined
- 789 number ✓ - Forum Mobile
- Invalid bios image ✓ - Forum BIOS
- Invalid signature detected check secure boot policy in setup - Forum Windows 10
- Could not connect to server - Forum TV & Vidéo
- Hard disk serial number changer - Télécharger - Personnalisation