致命错误:在非对象上调用成员函数fetch()

时间:2015-04-30 14:14:38

标签: php mysql pdo

尝试将表单中的用户名输入与存储在我的数据库中的用户名进行匹配。

我收到错误:

Fatal error: Call to a member function fetch() on a non-object in

代码:

 $sql = "SELECT * FROM users WHERE username = ?";
 $stmt = $dbh->prepare($sql);
 $result = $stmt->execute([$_POST['username']]);
 $users = $result->fetch(PDO::FETCH_ASSOC);

有谁能告诉我如何更正此错误?

1 个答案:

答案 0 :(得分:2)

不,您不应立即将->execute()分配给$result。这只会返回true/false,因此会出现Call to a member function fetch() on a non-object错误:

$result = $stmt->execute([$_POST['username']]);
// ^ true / false
(true/false)->fetch() // no, you can't

您仍然应该使用语句对象,然后将其用于->fetch()它。从那里你应该分配获取结果的返回值。

$result = $stmt->fetch(PDO::FETCH_ASSOC);