Fatal Error
Camarasama
Messages postés
33
Statut
Membre
-
Camarasama Messages postés 33 Statut Membre -
Camarasama Messages postés 33 Statut Membre -
Bonjour,
Etant debutant, je sollicite votre aide a la resolution de mon probleme en PHP
j'ai l'erreur suivante:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\xampp\htdocs\gnfs\Action.php:21 Stack trace: #0 C:\xampp\htdocs\gnfs\Action.php(21): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\gnfs\Action.php on line 21
mon html est le suivant:
et mon php est le suivant:
j'ai aussi joint une capture d'ecran de mon code
php
Merci pour votre aide
Etant debutant, je sollicite votre aide a la resolution de mon probleme en PHP
j'ai l'erreur suivante:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\xampp\htdocs\gnfs\Action.php:21 Stack trace: #0 C:\xampp\htdocs\gnfs\Action.php(21): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\gnfs\Action.php on line 21
mon html est le suivant:
<form name="All" method="post" action="Action.php">
<label>Username:
<input type="text" name="u_name" id="u_name">
</label>
<label>Staff ID
<input type="password" name="st_id" id="st_id">
</label>
Login
<input type="submit" name="sub" id="sub" value="Login">
</form>
et mon php est le suivant:
<?php
// Connexion to BDD
try
{
$bdd = new PDO('mysql:host=localhost;dbname=newfire', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// End of connexion
// Vérification des identifiants
$u_name = htmlspecialchars($_POST['u_name']);
$st_id = htmlspecialchars($_POST['st_id']);
$req = $bdd->prepare('SELECT ID FROM personnel_info WHERE username = :u_name AND staff_id = :st_id');
$req->execute(array(
'username' => $u_name,
'staff_id' => $st_id));
$resultat = $req->fetch();
if (!$resultat)
{
echo 'Mauvais identifiant ou mot de passe !';}
else{
echo 'OK';}
?>
j'ai aussi joint une capture d'ecran de mon code
php

| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI Merci d'y penser dans tes prochains messages. |
Merci pour votre aide
1 réponse
-
Bonjour,
1 - Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
2 -$req = $bdd->prepare('SELECT ID FROM personnel_info WHERE username = :u_name AND staff_id = :st_id'); $req->execute(array( 'username' => $u_name, 'staff_id' => $st_id));
A remplacer par ://preparation de la requete et des variables $sql = 'SELECT ID FROM personnel_info WHERE username = :username AND staff_id = :st_id' ; $a_datas = array( ':username' => $u_name, ':st_id' => $st_id); //execution de la requete try{ $req = $bdd->prepare($sql); $req->execute($a_datas); }catch(Exception $e){ echo "Erreur ! ".$e->getMessage(); }
Avec cette syntaxe .. seuls les variables $sql et $a_datas sont à changer lorsque tu en as besoin.. le bloc TRY/CATCH qui exécute la requête reste toujours identique et permet d'avoir les messages d'erreurs en cas de souci.
PS: Ton souci venait du fait que le nom des variables contenues dans l'array étaient différents de ceux utilisés dans la requête !!!
Cordialement,
Jordane