Fatal Error
Camarasama
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
Camarasama Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
Camarasama Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
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 -
A remplacer par :
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
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
Camarasama
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
Merci Jordane, cela va beaucoup m'aider. je vais essayer et te faire un retour. Merci encore