Partage
  • Partager sur Facebook
  • Partager sur Twitter

SQLSTATE[HY093]: Invalid parameter number

Sujet résolu
24 septembre 2010 à 14:33:39

Bonjour
je suis en cours de tuto sur php et les bdd et me voici planter lamentablement et je ne trouve pas l'erreur.
quelqu'un a une idées ?

j'ai créer un formulaire qui m'envoie les données pour faire un update sur la base.
je reçois et je sécurise. Tout ce passe bien sauf pour le ID.
erreur affiché lors de l'éxecution =>
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\test\p.php on line 335

voici le code :


<?php
if(isset( $_POST['nomupdat']))
{
$nomupdat=htmlspecialchars($_POST['nomupdat']);
$possesseurupdat=htmlspecialchars($_POST['possesseurupdat']);
$consoleupdat=htmlspecialchars($_POST['consoleupdat']);
$prixupdat=(int)$_POST['prixupdat'];
$nbre_joueurs_maxupdat=(int)$_POST['nbre_joueurs_maxupdat'];
$commentairesupdat=htmlspecialchars($_POST['commentairesupdat']); // <= la ligne 335 est ici
$idupdat = (int) $_POST['idupdat'];




include('connect_bdd.php');

$updat = $bdd->prepare('UPDATE jeux_video SET nom = :nomupdat , possesseur = :possesseurupdat , console = :consoleupdat , prix = :prixupdat , commentaires = :commentairesupdate WHERE ID = :idupdat ');
$updat->execute(array(
'nomupdat' => $nomupdat ,
'possesseurupdat' => $possesseurupdat ,
'consoleupdat' => $consoleupdat ,
'prixupdat'=> $prixupdat ,
'idupdat'=> $idupdat,
'commentairesupdat'=>$commentairesupdat ));


echo " <br/>l'entrée " . $nomupdat . " est modifiée <br/>" ;
echo ' id du jeux modifié ' . $idupdat ;
$updat->closeCursor(); // termine le traitement de la requete
}

?>
je comprend pas pourquoi le id est pas défini surtout que echo ' id du jeux modifié ' . $idupdat ; affiche l'ID.
merci pour votre aide à venir.

JJA
  • Partager sur Facebook
  • Partager sur Twitter
24 septembre 2010 à 14:42:37


Regarde bien l'erreur renvoyée:
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Ca t'indique qu'à l'appel de ton execute, tu n'as pas le bon nombre de paramètres ou ils sont incorrects.


L'erreur se trouve un peu plus bas que la ligne indiquée:

<?php
$updat = $bdd->prepare('UPDATE jeux_video SET nom = :nomupdat , possesseur = :possesseurupdat , console = :consoleupdat , prix = :prixupdat , commentaires = :commentairesupdate WHERE ID = :idupdat '); 
$updat->execute(array(
'nomupdat' => $nomupdat ,
'possesseurupdat' => $possesseurupdat ,
'consoleupdat' => $consoleupdat ,
'prixupdat'=> $prixupdat ,
'idupdat'=> $idupdat,
'commentairesupdat'=>$commentairesupdat ));
?>


Dans ta requête tu as le paramètres: :commentairesupdate
et dans ton tableau tu passes: :commentairesupdat
  • Partager sur Facebook
  • Partager sur Twitter
24 septembre 2010 à 14:58:11

MERCI
çà fait depuis 11h ce matin que suis dessus, tout çà pour un e de trop.
j'ai traduit l'erreur par le nombre est pas défini et pas le nombre de paramètre.
maintenant çà marche au poil.

un grand merci
  • Partager sur Facebook
  • Partager sur Twitter
24 septembre 2010 à 14:59:48

L'orthographe est importante, même pour le nom des variables ;)
  • Partager sur Facebook
  • Partager sur Twitter
24 avril 2011 à 0:58:58

merci belsion et jja ce sujet m'a aidé a résoudre mon problème a moi également :D
  • Partager sur Facebook
  • Partager sur Twitter
13 mai 2011 à 17:06:28

Merci belsion ta réponse ma aidé aussi sur le même type de problème!
  • Partager sur Facebook
  • Partager sur Twitter
3 juin 2012 à 18:33:58

Moi j'ai le même soucis, or, j'ai beau verifer les variables, les noms etc, mais je trouve pas ...
On peut m'aider ?

<?php
	$query=$db->prepare('INSERT INTO request_gvfx (IDReq, IDMembre, Nom, Pseudo, Team, Mail, Contact, Type, FstCouleur, Theme, Objets, Polices, Textes, Commentaire, DateSend, DateFinish, Status, Link)
        VALUES (:idreq, :iduser, :nom, :pseudo, :tm, :mail, :contact, :type, :fstcouleur, :theme, :obj, :police, :txt, :coms, :temps, :tempfin, :status, :link)');
	$query->bindValue(':idreq', '', PDO::PARAM_INT);
	$query->bindValue(':iduser', ''.$id.'', PDO::PARAM_INT);
	$query->bindValue(':nom', $name, PDO::PARAM_STR);
	$query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
	$query->bindValue(':tm', $tm, PDO::PARAM_STR);
	$query->bindValue(':mail', $mail, PDO::PARAM_STR);
	$query->bindValue(':contact', $contact, PDO::PARAM_STR);
	$query->bindValue(':type', ''.$type.'', PDO::PARAM_INT);
	$query->bindValue(':fstcouleur', $couleur, PDO::PARAM_STR);
	$query->bindValue(':obj', $objet, PDO::PARAM_STR);
	$query->bindValue(':police', $police, PDO::PARAM_STR);
	$query->bindValue(':theme', $theme, PDO::PARAM_STR);
	$query->bindValue(':txt', $txt, PDO::PARAM_STR);
	$query->bindValue(':coms', $coms, PDO::PARAM_STR);
	$query->bindValue(':temps', ''.$temps.'', PDO::PARAM_STR);
	$query->bindValue(':tempsfin', ''.$datefin.'', PDO::PARAM_STR);
	$query->bindValue(':status', ''.$statut.'', PDO::PARAM_INT);
	$query->bindValue(':link', $link, PDO::PARAM_STR);
?>
  • Partager sur Facebook
  • Partager sur Twitter

SMITH Emmanuel
Développeur full-stack chez LiveSession'


Email: emmanuel.smith@jagfx.fr
Site: www.emmanuel-smith.me
Github: https://github.com/JAGFx

15 octobre 2013 à 15:23:10

Merci pour la correction. Pour moi c'était la faute de majuscule.
  • Partager sur Facebook
  • Partager sur Twitter
25 mars 2019 à 10:43:05

jai aussi ce meme soucis
  • Partager sur Facebook
  • Partager sur Twitter
25 mars 2019 à 11:46:50

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL