[Parametre PDO]Nombre de parametre do not match

Résolu
Bonjour,
Je suis entrain de developper une application web dynamique (un intranet) et j'utilise PDO pour la communication avec la base de données. Sauf que depuis ce matin une erreur que je comprend pas s'affiche.
-
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

PDOException dit que le nombre des parametres ne correspondent pas et pourtant ils correspondent. Voici le code PHP
$query = "INSERT INTO eleve(MATEL, NOMEL, PRENOM, DATENAISS, TUTEUR, ADRESSE, TEL, RELIGION, SEXE, 
		ANCETBS, REDOUBLANT, IMAGE, DATEAJOUT, LIEUNAISS, EMAIL, DATEARRIVEE) 
		 VALUES(:matel, :nomel, :prenom, :datenaiss, :tuteur, :addr, :tel, :rel, :sexe, :ancetbs, :redoublant, :image, :dateajout, lieunaiss, :email, :datearrivee)";
		$res = $pdo->prepare($query);
		
		$param = array(
			"matel" => $_POST['matel'],
			"nomel" => $_POST['nomel'],
			"prenom" => $_POST['prenom'],
			"datenaiss" => parseDate($_POST['datenaiss']),
			"tuteur" => $_POST['parent'],
			"addr" => $_POST['adresse'],
			"tel" => $_POST['tel'],
			"rel" => $_POST['religion'],
			"sexe" => $_POST['sexe'],
			"ancetbs" => $_POST['ancetbs'],
			"redoublant" => $_POST['redoublant'],
			"image" => $url,
			"dateajout" => date("Y-m-d", time()),
			"lieunaiss" => $_POST['lieunaiss'],
			"email" => $_POST['email'],
			"datearrivee" => parseDate($_POST['datearrivee'])
		);
		$res->execute($param);
$res->closeCursor();

Quelqu'un peut-il m'aider ou élucider le problème?
Merci d'avance pour toutes réponses.



--
"L'ordinateur est une grande invention : il y a autant d'erreur qu'avant mais plus personne n'est responsable..."

2 réponses

  1. Bonjour

    :image, :dateajout, lieunaiss, :email, ...

    Il te manque un ":" devant lieunaiss, ce n'est donc pas un paramètre pour ta requête préparée.
    2
    1. Et aussi, dans $param, les clés doivent correspondre aux étiquettes, or, elles doivent toutes être précédés de deux points ":".

      Mettez en résolu quand c'est résolu -.- ...
      0
      1. Le ":" est nécessaire dans la requête, mais pas dans $param.
        0
      2. Bon a savoir !
        Sauf que ça fonctionne seulement parce qu'il est rajouté par la suite si il est introuvable.
        0
      3. ça fonctionne seulement parce qu'il est rajouté
        Ah bon ? Tu le supposes, ou tu as une référence pour dire ça ?
        0
      4. Non je ne le supposes pas !

        https://github.com/php/php-src/blob/5.5/ext/pdo/pdo_stmt.c#L363
        0
      5. Merci de l'info !
        Très intéressant., Je sens que je vais y apprendre beaucoup de choses utiles (ou pas ^^).
        0