Php et mysql

Fermé
Nkuiteul Messages postés 1 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 30 mars 2016 - Modifié par jordane45 le 30/03/2016 à 21:35
 Utilisateur anonyme - 31 mars 2016 à 01:23
Bonjour / Bonsoir à tous.
Bien. J'ai besoin que quelqu'un puisse m'expliquer comment fonctionne la commande fetch() avec le fichier PDO. Voici un code que j'ai essayé d'écrire mais qui ne marche pas :
<?php
try
{
      $bdd = new PDO ('mysql:host=localhost;db=test', ´root´, non);
}
catch (Exception $e)
{
  Die ('Erreur' .$e->getMessage());
}
$reponse = $bdd->query('SELECT  * FROM test2');
while ($donnees = $reponse->fetch())
{
?>

Lors de l'exécution le serveur m'envoi le message d'erreur sur la ligne de while. De ce genre
Fatal error: Call to à member function fetch() on a non-object in C:\wamp\www\essai\accueil.php on Line 13
Call Stack
Décanter moi sur cette situation s'il vous plait.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

2 réponses

jordane45 Messages postés 38341 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 décembre 2024 4 716
30 mars 2016 à 21:39
Bonjour,

Avec QUERY .. pas de FETCH. (cela te retourne directement un array)
donc à la place d'un WHILE .. tu peux faire un FOREACH

Après.. perso... je préfère utiliser les requêtes préparées.

Comme ceci :

$sql = "SELECT  * FROM test2";
$prepare = $bdd->prepare($sql);
$prepare->execute();

// après tu peux faire 
while ($donnees = $prepare ->fetch())
{

}

//Ou encore :
$arr_result = $prepare->fetchAll();
foreach( $arr_result as $donnees )
{

}

0
Bonsoir

Contrairement à ce qu'a écrit Jordane (que je salue au passage), query ne retourne pas un array, mais bien un PDOStatement sur lequel on peut faire un fetch. Ton problème n'est pas à ce niveau là.
Ton erreur signifie qu' il y a un problème au niveau du query. Vu la simplicité de la requête, je ne vois guère d'erreur possible, à part que ta table test2 n'existe peut-être pas.
Mets ton instruction
$reponse = $bdd->query('SELECT  * FROM test2');
à l'intérieur du bloc try, s'il y a une erreur le catch te l'affichera.

[edit] Une autre cause d'erreur possible est que tu modifies $reponse à l'intérieur du while.
0