[RESOLU] UPDATE PDO erreur SQLSTATE[HY093]

Eléphant du PHP | 233 Messages

23 nov. 2018, 19:21

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... :)

Mammouth du PHP | 2703 Messages

23 nov. 2018, 19:28

il y a 2 paramètres dans la requête et un seul est passé à execute.

Petit nouveau ! | 8 Messages

23 nov. 2018, 19:30

Enlèves l'espace entre L d'email et ' dans ta requête. il me semble que c'est ça.

Eléphant du PHP | 233 Messages

23 nov. 2018, 19:34

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...

Petit nouveau ! | 8 Messages

23 nov. 2018, 19:39

tu as changer le nom de ta table entre temps?

Eléphant du PHP | 233 Messages

23 nov. 2018, 19:41

oui, je ne voulais pas donner le vrai nom de ma table :)

Petit nouveau ! | 8 Messages

23 nov. 2018, 19:45

Ah d'accord, dans ce cas désolé je ne trouve pas la réponse.

Eléphant du PHP | 233 Messages

23 nov. 2018, 20:10

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 :)

Petit nouveau ! | 8 Messages

23 nov. 2018, 20:29

En gros pas d'espace entre = et : dans la requête? Ha ben merci j'aurais appris quelque chose :)

Mammouth du PHP | 2703 Messages

23 nov. 2018, 21:05

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 "

Eléphant du PHP | 233 Messages

01 déc. 2018, 19:52

Effectivement l'erreur ne venait pas de là mais plutôt des 2 paramètres manquants

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