PDO误解

时间:2011-09-29 20:02:16

标签: php oop pdo

我正在编写我的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); }
}

使用此功能时出错。

2 个答案:

答案 0 :(得分:2)

您的查询可能会失败,因为您的查询没有包含引号。

当发生这种情况时,query()将返回false而不是对象,从而打破链条。

不要这样做;先运行查询,保存结果,然后检查是否为false。

顺便说一下,你应该真正使用预备语句 - 你当前的语句容易受到SQL injection的攻击。<​​/ p>

答案 1 :(得分:0)

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

请注意2 不同类型的单引号

以为,你的误解与PDO无关。它是你必须学习的基本SQL语法