我正在编写我的PHP博客引擎。我正在使用PDO。而现在,当我写班级成员时 - 我有一个错误。
致命错误:在非对象中调用成员函数fetch() 第42行/home/tucnak/Server/scripts/php/classes/Member.php
我班级的源代码:
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); }
}
使用此功能时出错。
答案 0 :(得分:2)
您的查询可能会失败,因为您的查询没有包含引号。
当发生这种情况时,query()
将返回false
而不是对象,从而打破链条。
不要这样做;先运行查询,保存结果,然后检查是否为false。
顺便说一下,你应该真正使用预备语句 - 你当前的语句容易受到SQL injection的攻击。</ p>
答案 1 :(得分:0)
"SELECT count(*) FROM `users-general` WHERE nick = '$user' AND password = '$password'"
请注意2 不同类型的单引号
以为,你的误解与PDO无关。它是你必须学习的基本SQL语法