Page 1 sur 1

UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 19:21
par cris84
Bonjour à tous,
je n'arrive pas résoudre mon problème d'update avec PDO, je ne vois pas où est l'erreur. Je veux changer le mot de passe via un formulaire simple (il ne contient que l'adresse email. J'utilise rand pour avoir un nouveau mot de passe aléatoire.
Impossible de mettre à jour ma table. voici l'erreur : Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

et voici mon code
$email = $_POST['email'];
$newpassword = rand(100000, 999999);
			
					$updat = $bdd->prepare('UPDATE membres SET password = :newpassword WHERE email = :email ');
					$updat->execute(array(
					'password' => md5($newpassword)
					));
Merci de votre aide... :)

Re: UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 19:28
par or 1
il y a 2 paramètres dans la requête et un seul est passé à execute.

Re: UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 19:30
par blastouille
Enlèves l'espace entre L d'email et ' dans ta requête. il me semble que c'est ça.

Re: UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 19:34
par cris84
J'ai fait ça mais c'est idem :
$updat = $bdd->prepare('UPDATE membres SET password = :newpassword WHERE email = :email');
					$updat->execute(array(
					'password' => md5($newpassword),
					'email' => $email
					));
J'ai enlevé l'espace de la fin dit par blastouille mais c'est pareil...

Re: UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 19:39
par blastouille
tu as changer le nom de ta table entre temps?

Re: UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 19:41
par cris84
oui, je ne voulais pas donner le vrai nom de ma table :)

Re: UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 19:45
par blastouille
Ah d'accord, dans ce cas désolé je ne trouve pas la réponse.

Re: UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 20:10
par cris84
voici la réponse toute bête :
$email = $_POST['email'];
$newpassword = rand(100000, 999999);
      
          $modif_pass = $bdd->prepare("UPDATE membres SET  password=:newpassword WHERE email =:email");
              $modif_pass->execute(array(
              'newpassword' => md5($newpassword),
	      'email' => $email
              ));
ça peut servir :)

Re: [RESOLU] UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 20:29
par blastouille
En gros pas d'espace entre = et : dans la requête? Ha ben merci j'aurais appris quelque chose :)

Re: [RESOLU] UPDATE PDO erreur SQLSTATE[HY093]

Posté : 23 nov. 2018, 21:05
par or 1
http://php.net/manual/fr/pdo.prepare.php
il y a un espace dans l'exemple donc je doute que ce soit ce qui génère l'erreur "Invalid parameter number: number of bound variables does not match number of tokens "

Re: [RESOLU] UPDATE PDO erreur SQLSTATE[HY093]

Posté : 01 déc. 2018, 19:52
par cris84
Effectivement l'erreur ne venait pas de là mais plutôt des 2 paramètres manquants

'newpassword' => md5($newpassword),
        'email' => $email