prepare()函数php出错

时间:2013-08-03 02:56:29

标签: php mysql pdo

当我收到错误时,我正在测试使用我的脚本登录

  

致命错误:在第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。

1 个答案:

答案 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
}