当我收到错误时,我正在测试使用我的脚本登录
致命错误:在第30行的/ CMS / index.php中的非对象上调用成员函数prepare()
我检查第30行并且在30号左右,但我看不出错误在哪里:
$userp = $sql->prepare("SELECT user, passwd FROM users WHERE user = :username AND passwd = :password LIMIT 1");
$userp->execute(array(
'username' => $username,
'password' => $passwd
));
错误是我没有声明$ sql变量。 Mea culpa。
答案 0 :(得分:0)
在运行查询之前,您需要检查并确保将$ sql创建为PDO实例。如果连接失败,那么$ sql将为null ...检查的一个好方法是:
$sql = null;
try {
$sql = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
if($sql instanceof PDO)
{
$userp = $sql->prepare("SELECT user, passwd FROM users WHERE user = :username AND passwd = :password LIMIT 1");
$userp->execute(array(
'username' => $username,
'password' => $passwd
));
}
else
{
// $Sql is null, and not an instance of PDO
}