Problème UPDATE de base de données
Posté : 28 mai 2013, 17:33
Bonjour,
Grand débutant en PHP, j'essaie de mettre à jour une base de données à partir d'un formulaire :
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\test w\update_carburant2.php on line 60
Pourriez_vous m'aider, en excusant mon incompétence ?
Grand débutant en PHP, j'essaie de mettre à jour une base de données à partir d'un formulaire :
- Affichage d'un formulaire de saisie du mot de passe (OK, ça fonctionne)
- Si le bon mot de passe est saisi, connexion à la bdd et affichage d'un second formulaire, prérempli des valeurs présentes dans la bdd (OK, ça fonctionne aussi)
- Lors de la validation de ce second formulaire, mise à jour de la bdd : c'est là le problème !
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\test w\update_carburant2.php on line 60
<p>Veuillez entrer votre mot de passe :</p>
<form action="" method="post">
<p>
<input type="password" name="mot_de_passe" htmlonlychars() autofocus/>
<input type="submit" value="Valider"/>
</p>
</form>
<?php
//vérifie la saisie du mot de passe et mot de passe OK
if (isset($_POST['mot_de_passe'])
AND $_POST ['mot_de_passe']=="9999")
//si mot de passe OK, connexion à la bdd, récupération des valeurs actuelles et affichage du formulaire
{
$bdd=new PDO('mysql:host=localhost;dbname=bases','root','')or die(print_r($bdd->errorInfo()));
$reponse=$bdd->query('SELECT GO, E10, SP98 from prix_carburant');
$donnees=$reponse->fetch();
?>
<form action="" method="post">
<p id="form">
<label>GASOIL</label><input type="text" name="GO" id="GO" value="<?php echo $donnees['GO'];?>" required maxlength="5"/></br>
<label>SP95-E10</label><input type="text" name="E10" id="E10" value="<?php echo $donnees['E10'];?>" required maxlength="5"/></br>
<label>SP98</label><input type="text" name="SP98" id="SP98" value="<?php echo $donnees['SP98'];?>"required maxlength="5"/>
<input type="submit" value="Envoyer"/>
<input type="reset" value="Effacer"/>
</p>
</form>
<?php
$reponse->closeCursor();//fin de la requete de préremplissage du formulaire
}
//connexion à la base//
if (isset($_POST['GO']) )
{
$bdd=new PDO('mysql:host=localhost;dbname=bases','root','')or die(print_r($bdd->errorInfo()));
$req=$bdd->prepare('UPDATE prix_carburant SET GO = :nvGO, E10 = :nvE10, SP98 = :nvSP98');
$req->execute(array(':nvGO' => $_POST['GO'],
':nvE1O' => $_POST['E10'],
':nvSP98' => $_POST['SP98']
));
}
//si mot de passe KO, reste en formulaire de saisie//
?>
J'ai relu plusieurs fois le code, je ne trouve pas l'erreur.Pourriez_vous m'aider, en excusant mon incompétence ?