Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2011, 11h50   #1
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 89
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 89
Points : 35
Points : 35
Par défaut Problème sur unSELECT via PDO

Bonjour à tous et à toutes,

Dans le code suivant, j'insère un user dans ma Base de données via un login et pass du formulaire.
Par contre dans mon select, je ne parvient pas à récupérer mon user.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
<form name="form1" id="origineForm" style="margin-top:50px" method="post" action="" onsubmit='return verif_nom(document.form1.login.value);'>
		Login 
		<label for="login"><input type="text" value="" size=20 maxlength=20 name="login"></input></label>
		Password
		<label for="pass"><input type="password" value="" size=20 maxlength=20 name="pass"></input></label>
		<input type="submit" value="sauvegarder" name="valider" class="submit" />		 		 
	</form>
 
	<?php 
 
		$bdd=connect();
		$login=$_POST['login'];
		$pass=$_POST['pass'];
 
		$query=("INSERT INTO auth(auth_id,auth_login,auth_pass) VALUES(:id,:login,:pass)");
		$stm=$bdd->prepare($query);
		$stm->bindValue(':id', 'NULL');
		$stm->bindValue(':login', $login);
		$stm->bindValue(':pass', $pass);
		$stm->execute();
 
		$query=null;
 
		$sel=$bdd->prepare("SELECT * FROM auth WHERE auth_login='".$login."' AND auth_pass='".$pass."'");
		$sel->setFetchMode(PDO::FETCH_OBJ);
		while($row = $sel->fetch()) {
			echo $row->auth_login;
			echo $row->auth_pass;
		}
 
	?>
Merci d'avance.
Transact.
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 12h49   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 706
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 706
Points : 3 274
Points : 3 274
Salut

La requête n'a pas été exécuté.

Aussi, tu prévois de faire une boucle (un while) sur cette requête.
Or, théoriquement un login et un mot de passe doit correspondre un 1 seul et unique user (1 Identifiant d'ailleurs).
Du coup, faire une boucle ne sert à rien.

Mais encore, utilise les requête préparées comme tu l'a fais pour l'insertion, ça t'éviteras des problèmes.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 13h26   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
tu prépares une requête mais tu l'exécutes pas, d'ailleurs rien n'est en paramètre, ton code est soumis au injection, et si tu faire faire un fetch en object fait fetchObject()
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 14h01   #4
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 89
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 89
Points : 35
Points : 35
En modifiant mon code de la sorte, j'obtiens le résultat voulu

Code :
1
2
3
4
5
6
7
8
9
10
11
 
		$sel=$bdd->prepare("SELECT * FROM auth WHERE auth_login='".$login."' AND auth_pass='".$pass."'");
		$sel->execute();		
 
		$result = $sel->fetch(PDO::FETCH_OBJ);
 
 
		print $result->auth_login;
		print("\n");
		print $result->auth_pass;
		print("\n");
Merci encore.
Transact.
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 14h03   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par transact Voir le message
En modifiant mon code de la sorte, j'obtiens le résultat voulu

Code :
1
2
3
4
5
6
7
8
9
10
11
 
		$sel=$bdd->prepare("SELECT * FROM auth WHERE auth_login='".$login."' AND auth_pass='".$pass."'");
		$sel->execute();		
 
		$result = $sel->fetch(PDO::FETCH_OBJ);
 
 
		print $result->auth_login;
		print("\n");
		print $result->auth_pass;
		print("\n");
Merci encore.
Transact.
ca n'empêche pas le fait que ton code n'est pas bon.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h39.


 
 
 
 
Partenaires

Hébergement Web