Page 1 sur 1

requette SQL : reponse vide

Posté : 16 nov. 2011, 17:28
par arthur77
Bonjour,

j'ai un problème avec le retour d'une requette SQL. J'effectue la requette de façon banale avec PDO, sauf que si il y a une réponse il m'affiche ce que je veux, mais si mon "WHERE" n'est pas rempli par ma base, il m'affiche plein d'erreurs dés que je veux utilisé les infos (qui sont pour le coup, inexistantes) !
Alors j'ai rajouté juste après la requette :
if (!$req)
						{ die('Cet user n\existe pas. <a href="javascript:history.go(-1)" alt="retour"> Retour. </a>'); }
Mais toujours le meme résultat ...

Voici le code avec la requette :
$sql  = 'SELECT * FROM user WHERE id ='.$id;
	//echo $sql;
					$req = $connexion->query($sql); 
					if (!$req)
						{ die('Cet utilisateur n\existe pas. <a href="javascript:history.go(-1)" alt="retour"> Retour. </a>'); }
					$req->setFetchMode(PDO::FETCH_OBJ); 
					$data = $req->fetch();
//affichage des infos

Si quelqu'un peut m'aider ... merci ! :)

EDIT : je me suis dit que je teste ma réponse BDD peut être trop tôt, faut-il l'a traiter avant ? j'ai placé ma condition if(!req) a différents emplacements mais le résultat est le même ...

Re: requette SQL : reponse vide

Posté : 17 nov. 2011, 11:03
par macgawel
Bonjour.

1. Ce serait bien de mettre les messages d'erreurs, ça aiderait :roll:

2. RTFM !
Valeurs de retour : PDO::query() retourne un objet PDOStatement, ou FALSE si une erreur survient.
Ta requête est correcte, donc le query renvoie un objet.
Comme il n'y a pas de réponse, l'objet est vide. Je suppose que les erreurs viennent après, genre une boucle sur un objet vide.

Si tu regardes l'exemple 1 de PDO::query(), tu auras une bonne idée de la façon de travailler...

Re: requette SQL : reponse vide

Posté : 17 nov. 2011, 11:47
par Mazarini
Bonjour,

Dans le "die" tu devrais ajouter $sql et mysql_error() pour avoir une idée plus précise du problème.
die('Cet user n\existe pas. <a href="javascript&#058;history.go(-1)" alt="retour"> Retour. </a><br>'.$sql.'<br>'.mysql-error())

Re: requette SQL : reponse vide

Posté : 18 nov. 2011, 16:49
par arthur77
J'ai changer ma condition, j'ai donc :
$sql  = 'SELECT * FROM user WHERE id ='.$id;
	//echo $sql;
					$req = $connexion->query($sql); 
					$req->setFetchMode(PDO::FETCH_OBJ); 
					$data = $req->fetch();
					if ($req->rowCount() == 0)
						{
						// l'user n'existe pas
						die('Cet artiste n\'existe pas. <a href="javascript:history.go(-1)" alt="retour"> Retour. </a>');
						}
Et ça fonctionne, désolé pour le dérangement :? et merci :)