Fatal error: Call to a member function query() on string

Suzuha Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Suzuha Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis en train de coder un site qui est relié à une base de données. J'arrive à me connecter à la BDD, mais dès qu'il s'agit d'interagir avec, je n'y arrive pas. (j'ai regardé les autres sujets, mais je ne comprends toujours pas d'où vient l'erreur)

Voici mon code qui doit me permettre de récupérer le contenu de la table "users" pour pouvoir authentifier un utilisateur ensuite.

$query = 'SELECT * FROM users';
$resultat= $bdd->query($query);

echo "nombre de ligne récupérée :".$resultat->num_rows;

while( ($ligne = $resultat->fetch(PDO::FETCH_OBJ)) !== NULL){
var_dump($ligne);
}

je reçois à ce moment là l'erreur : Fatal error: Call to a member function query() on string.

Merci pour votre aide !

3 réponses

Utilisateur anonyme
 
$bdd est bien une chaîne :
$bdd = 'projet';
.
Là variable à utiliser poiur la connexion est celle obtenue par le new PDO, c'est à dire $connexion.

Pour le query, tu aurais dû écrire
$resultat= $connexion->query($query);
.
Pour les futures erreurs, essaye de comprendre toi-même les messages d'erreur, et si tu n'y arrives pas, recopie les messages COMPLETS.
2
Suzuha Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai essayé de comprendre par moi-même, mais je n'ai jamais compris comment fonctionne le lien avec la base de données malgré les nombreuses heures passées dessus.

Merci encore pour ton aide si matinale !
0
Utilisateur anonyme
 
Bonjour

Le message signifie que tu appelles la fonction query sur une chaîne de caractères.
Comme tu l'appelles par $bdd->query($query), cela signifie (si l'erreur est bien à cette ligne) que $bdd est une chaîne, et non pas une connexion à mysql.
Peux-tu nous montrer le code où est définie la variable $bdd ? (en cachant tes identifiants bien sûr)

Et fais attention, il te reste d'autres erreurs, on verra plus tard.
2
Suzuha Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   2
 
C'est bien sur cette ligne se trouve l'erreur.

Voici le code qui me connecte à la base de données :

$serveur = 'localhost';
$bdd = 'projet';
$user = 'root';
$pass = '';

try{
$connexion = new PDO('mysql:host='.$serveur.';dbname='.$bdd, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
//echo "Connexion OK !";
}

catch (PDOException $e) {

echo "Erreur de connexion à la base de données " . $e->getMessage() ;

die();
}


Merci de ta réponse !
2