IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Erreur: PDOStatement::execute(): SQLSTATE[HY093]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Avatar de johnrock
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations forums :
    Inscription : Janvier 2013
    Messages : 40
    Points : 91
    Points
    91
    Billets dans le blog
    1
    Par défaut Erreur: PDOStatement::execute(): SQLSTATE[HY093]
    Bonjour!
    Après plusieurs tentatives et recherches, je suis épuisé, épuisé de ne pas comprendre ni trouver de solution à mon problème.
    Je rencontre cette erreur:

    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\cuba\plus\addStud.php on line 51
    Que puis-je donc faire pour le résoudre? A quoi est-ce dû?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    <?php if (isset ($_POST['valider'])){
    	 //On récupère les valeurs entrées par l'opérateur de saisie :
    	$nom = $_POST['nom']; 
    	$prenom = $_POST['prenom']; 
    	$sexe = $_POST['sexe']; 
    	$datedenaissance = $_POST['dateDeNaissance']; 
    	$lieudenaissance = $_POST['lieuDeNaissance']; 
    	$pere = $_POST['pere'];
    	$mere = $_POST['mere']; 
    	$promotion = $_POST['promotion']; 
    	$etablissement = $_POST['etablissement']; 
    	$filiere = $_POST['filiere']; 
    	$specialite = $_POST['specialite'];
    	$passeport = $_POST['passeport']; 
    	$delivrele = $_POST['delivrele']; 
    	$expirele = $_POST['expirele']; 
    	$email = $_POST['email']; 
    	$telephone = $_POST['telephone']; 
    	$urgenom = $_POST['urgeNom'];
    	$urgeadresse = $_POST['urgeAdresse']; 
    	$urgetel = $_POST['urgeTel']; 
    	$urgemail = $_POST['urgEmail'];
    	 //connexion à la base de données faite depuis une autre page
     
    	 //On prépare la commande sql d'insertion des données dans la table "etudiants"
    	 try{
    		$req = $bdd->prepare('INSERT INTO etudiants(nom,prenom,sexe,date_naissance,lieu_naissance,pere,mere,promotion,ets,filiere,specialite,passeport,delivre_le,expire_le,email,tel,urg_nom,urg_adresse,urg_tel,urg_email) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');	
     
    		$jrk = array(
    		'nom' => $nom,
    		'prenom' => $prenom,
    		'sexe' => $sexe,
    		'date_naissance' => $datedenaissance,
    		'lieu_naissance' => $lieudenaissance,
    		'pere' => $pere,
    		'mere' => $mere,
    		'promotion' => $promotion,
    		'ets' => $etablissement,
    		'filiere' => $filiere,
    		'pecialite' => $specialite,
    		'passeport' => $passeport,
    		'delivre_le' => $delivrele,
    		'expire_le' => $expirele,
    		'email' => $email,
    		'tel' => $telephone,
    		'urg_nom' => $urgenom,
    		'urg_adresse' => $urgeadresse,
    		'urg_tel' => $urgetel,
    		'urg_mail' => $urgemail
    		);
    		$req->execute($jrk);
    ?>
    	<!--<span style="padding: 20px; background: green; color: white;">L'étudiant a bien été ajouté.</span> -->
    <?php 
    	 }
    	 catch(Exception $b)
    	 {
    		 die('Erreur: '.$b->getMessage());
    	 }
    }
    ?>
    <div class="form left">
    	<h1>AJOUTER ETUDIANT</h1>
    	<form name="inscription" method="post" action="">
    		<h2>INFORMATIONS PERSONNELLES DE L'ETUDIANT</h2>
    		 NOM : <input type="text" name="nom" value="<?php if(isset($_POST['nom'])){ echo $_POST['nom']; } ?>"/> <br/> <br/>
    		 PRENOM: <input type="text" name="prenom" value=""/> <br/><br/>
    		 SEXE: <input type="radio" name="sexe" value="M" value="<?php if(isset($_POST['sexe'])){ echo $_POST['sexe']; } ?>"/>Masculin<input type="radio" name="sexe" value="F"/>Féminin<br/><br/>
    		 DATE DE NAISSANCE: <input type="text" name="dateDeNaissance" value="<?php if(isset($_POST['dateDeNaissance'])){ echo $_POST['dateDeNaissance']; } ?>"/></br></br>
    		 LIEU DE NAISSANCE: <input type="text" name="lieuDeNaissance" value="<?php if(isset($_POST['lieuDeNaissance'])){ echo $_POST['lieuDeNaissance']; } ?>"/></br></br>
    		 NOM(S) ET PRENOM(S) DU PERE: <input type="text" name="pere" value="<?php if(isset($_POST['pere'])){ echo $_POST['pere']; } ?>"/><br/></br>
    		 NOM(S) ET PRENOM(S) DE LA MERE: <input type="text" name="mere" value="<?php if(isset($_POST['mere'])){ echo $_POST['mere']; } ?>"/><br/></br>
    		 PROMOTION: <input type="text" name="promotion" value="<?php if(isset($_POST['promotion'])){ echo $_POST['promotion']; } ?>"/><br/></br>
    		 ETABLISSEMENT: <input type="text" name="etablissement" value="<?php if(isset($_POST['etablissement'])){ echo $_POST['etablissement']; } ?>"/> <br/></br>
    		 FILIERE OU OPTION:<input type="text" name="filiere" value="<?php if(isset($_POST['filiere'])){ echo $_POST['filiere']; } ?>"/> <br/></br>
    		 SPECIALITE:<input type="text" name="specialite" value="<?php if(isset($_POST['specialite'])){ echo $_POST['specialite']; } ?>"/> <br/></br>
    		 PASSEPORT N°: <input type="text" name="passeport" value="<?php if(isset($_POST['passeport'])){ echo $_POST['passeport']; } ?>"/> <br/></br>
    		 DELIVRÉ LE:<input type="text" name="delivrele" value="<?php if(isset($_POST['delivrele'])){ echo $_POST['delivrele']; } ?>"/> <br/></br>
    		 EXPIRE LE:<input type="text" name="expirele" value="<?php if(isset($_POST['expirele'])){ echo $_POST['expirele']; } ?>"/> <br/></br>
    		 EMAIL:<input type="email" name="email" value="<?php if(isset($_POST['email'])){ echo $_POST['email']; } ?>"/> <br/><br/>
    		 TELEPHONE:<input type="text" name="telephone" value="<?php if(isset($_POST['telephone'])){ echo $_POST['telephone']; } ?>"/> <br/><br/>
    		 <h2> INFORMATIONS EN CAS D'URGENCE </h2>
    		 TUTEUR AU *****:<input type="text" name="urgeNom" value="<?php if(isset($_POST['urgeNom'])){ echo $_POST['urgeNom']; } ?>"/> <br/><br/>
    		 ADRESSE D'URGENCE:<input type="text" name="urgeAdresse" value="<?php if(isset($_POST['urgeAdresse'])){ echo $_POST['urgeAdresse']; } ?>"/> <br/><br/>
    		 TELEPHONE D'URGENCE:<input type="text" name="urgeTel" value="<?php if(isset($_POST['urgeTel'])){ echo $_POST['urgeTel']; } ?>"/> <br/><br/>
    		 EMAIL D'URGENCE:<input type="email" name="urgEmail" value="<?php if(isset($_POST['urgeEmail'])){ echo $_POST['urgeEmail']; } ?>"/> <br/><br/>
    		<input type="submit" name="valider" value="ENREGISTRER"/> </form>
    	</form>
    </div>
    Vivement, merci d'avance, pour votre aide!
    ✪ ➭ Pensez à visiter: http://johnclub242.blogspot.com

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Est-ce que tu as essayé de passer un tableau de paramètres sans les noms des indices ?
    Tu nommes les postes alors que tu as des ?.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre régulier
    Avatar de johnrock
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations forums :
    Inscription : Janvier 2013
    Messages : 40
    Points : 91
    Points
    91
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par badaze Voir le message
    Est-ce que tu as essayé de passer un tableau de paramètres sans les noms des indices ?
    Tu nommes les postes alors que tu as des ?.
    Oui, ça n'as toujours pas fonctionné.
    ✪ ➭ Pensez à visiter: http://johnclub242.blogspot.com

  4. #4
    Membre régulier
    Avatar de johnrock
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations forums :
    Inscription : Janvier 2013
    Messages : 40
    Points : 91
    Points
    91
    Billets dans le blog
    1
    Par défaut
    J'ai tenter de modifier le code de la manière suivante;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    <?php if (isset ($_POST['valider'])){
    	 //On récupère les valeurs entrées par l'opérateur de saisie :
    	$nom = $_POST['nom']; 
    	$prenom = $_POST['prenom']; 
    	$sexe = $_POST['sexe']; 
    	$datedenaissance = $_POST['dateDeNaissance']; 
    	$lieudenaissance = $_POST['lieuDeNaissance']; 
    	$pere = $_POST['pere'];
    	$mere = $_POST['mere']; 
    	$promotion = $_POST['promotion']; 
    	$etablissement = $_POST['etablissement']; 
    	$filiere = $_POST['filiere']; 
    	$specialite = $_POST['specialite'];
    	$passeport = $_POST['passeport']; 
    	$delivrele = $_POST['delivrele']; 
    	$expirele = $_POST['expirele']; 
    	$email = $_POST['email']; 
    	$telephone = $_POST['telephone']; 
    	$urgenom = $_POST['urgeNom'];
    	$urgeadresse = $_POST['urgeAdresse']; 
    	$urgetel = $_POST['urgeTel']; 
    	$urgemail = $_POST['urgEmail'];
    	 //connexion à la base de données faite depuis une autre page
    	 //On prépare la commande sql d'insertion des données dans la table "etudiants"
    	 try{
    		 $sql = 'INSERT INTO etudiants(nom,prenom,sexe,date_naissance,lieu_naissance,pere,mere,promotion,ets,filiere,specialite,passeport,delivre_le,expire_le,email,tel,urg_nom,urg_adresse,urg_tel,urg_email) 
    		 VALUES(:nom,:prenom,:sexe,:date_naissance,:lieu_naissance,:pere,:mere,:promotion,:ets,:filiere,:specialite,:passeport,:delivre_le,:expire_le,:email,:tel,:urg_nom,:urg_adresse,:urg_tel,:urg_email)';
     
    		$req = $bdd->prepare($sql);	
     
    		// $jrk = array(
    		// 'nom' => $nom,
    		// 'prenom' => $prenom,
    		// 'sexe' => $sexe,
    		// 'date_naissance' => $datedenaissance,
    		// 'lieu_naissance' => $lieudenaissance,
    		// 'pere' => $pere,
    		// 'mere' => $mere,
    		// 'promotion' => $promotion,
    		// 'ets' => $etablissement,
    		// 'filiere' => $filiere,
    		// 'specialite' => $specialite,
    		// 'passeport' => $passeport,
    		// 'delivre_le' => $delivrele,
    		// 'expire_le' => $expirele,
    		// 'email' => $email,
    		// 'tel' => $telephone,
    		// 'urg_nom' => $urgenom,
    		// 'urg_adresse' => $urgeadresse,
    		// 'urg_tel' => $urgetel,
    		// 'urg_mail' => $urgemail
    		// );
    		// $req->execute($jrk);
     
    		$req->bindParam(':nom', $nom );
    		$req->bindParam(':prenom', $prenom );
    		$req->bindParam(':sexe', $sexe);
    		$req->bindParam(':date_naissance', $datedenaissance);
    		$req->bindParam(':lieu_naissance', $lieudenaissance);
    		$req->bindParam(':pere', $pere);
    		$req->bindParam(':mere', $mere);
    		$req->bindParam(':promotion', $promotion);
    		$req->bindParam(':ets', $etablissement);
    		$req->bindParam(':filiere', $filiere);
    		$req->bindParam(':specialite', $specialite);
    		$req->bindParam(':passeport', $passeport);
    		$req->bindParam(':delivre_le', $delivrele);
    		$req->bindParam(':expire_le', $expirele);
    		$req->bindParam(':email', $email);
    		$req->bindParam(':tel', $telephone);
    		$req->bindParam(':urg_nom', $urgenom);
    		$req->bindParam(':urg_adresse', $urgadresse);
    		$req->bindParam(':urg_tel', $urgetel);
    		$req->bindParam(':urg_email', $urgemail);
     
    		$req->execute();
     
    ?>
    	<!--<span style="padding: 20px; background: green; color: white;">L'étudiant a bien été ajouté.</span> -->
    <?php 
    	 }
    	 catch(Exception $b)
    	 {
    		 die('Erreur: '.$b->getMessage());
    	 }
    }
    ?>
    Le problème est que l'erreur ne s'affichant plus, les données ne s'enregistrent non plus dans ma base de données.
    Merci de m'aider! J'y suis bloqué.
    ✪ ➭ Pensez à visiter: http://johnclub242.blogspot.com

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Je pensais à ça pour faire le match avec les ?. Attention les paramètres sont considérés comme des chaînes.

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $jrk = array($nom,$prenom, etc...);

    Si malgré ta modification ça ne fonctionne pas cela peut être un autre type d’erreur.
    Clé en double, etc...
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/01/2017, 01h19
  2. [PDO] Impossible de corriger PDOStatement::execute(): SQLSTATE[HY093]
    Par Valdist dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/04/2016, 11h30
  3. [PDO] Erreur execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables
    Par Aaymeric91 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 30/09/2013, 17h27
  4. Réponses: 3
    Dernier message: 22/05/2013, 13h06
  5. Réponses: 6
    Dernier message: 27/10/2011, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo