2011-09-29 2 views
0

J'écris mon moteur de blog PHP. J'utilise PDO pour cela. Et maintenant, quand j'écris un cours Membre - j'ai une erreur.PDO Malentendu

Fatal error: Call to a member function fetch() on a non-object in /home/tucnak/Server/scripts/php/classes/Member.php on line 42

et le code source de ma classe:

public function authMember($user, $password) 
{ 
    $password = hashIt($password); 
    $count = 100500; 
    $count = $this->db->query("SELECT count(*) FROM users-general WHERE nick = $user AND password = $password;")->fetch(); 
    echo($count); 
    // if ($count == 1){ return 1; } else { throw new Exception("",491); } 
} 

J'ai une erreur en utilisant cette fonction.

Répondre

2

Votre requête échoue probablement car vous n'avez pas de guillemets autour de votre requête.

Lorsque cela se produit, query() renverra false au lieu d'un objet, en brisant la chaîne.

Ne le faites pas de cette façon; Exécutez d'abord la requête, enregistrez son résultat, puis vérifiez si elle est fausse. À propos, vous devriez vraiment utiliser des instructions préparées - votre instruction actuelle est vulnérable à SQL injection.

+0

merci. mais je ne peux pas trouver d'erreur dans ma syntaxe SQL. – tucnak

+0

'nick = $ utilisateur AND mot de passe = $ mot de passe;' il manque des guillemets autour de '$ user' et' $ password' –

0
"SELECT count(*) FROM `users-general` WHERE nick = '$user' AND password = '$password'" 

notez les guillemets simples de 2 différents types

Pensée, votre incompréhension n'a rien à voir avec AOP. c'est la syntaxe SQL de base, vous devez apprendre

+0

merci. Je suis totalement idiot. – tucnak