requette SQL : reponse vide

Eléphant du PHP | 188 Messages

16 nov. 2011, 17:28

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 ...

Mammouth du PHP | 672 Messages

17 nov. 2011, 11:03

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...

ViPHP
ViPHP | 2577 Messages

17 nov. 2011, 11:47

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())

Eléphant du PHP | 188 Messages

18 nov. 2011, 16:49

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 :)