尝试将表单中的用户名输入与存储在我的数据库中的用户名进行匹配。
我收到错误:
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);
有谁能告诉我如何更正此错误?
答案 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);