Php prepare()函数出现错误

Php prepare()函数出现错误,php,mysql,pdo,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( '

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

致命错误:对第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变量。这就是罪过。

在运行查询之前,您需要检查并确保$sql被创建为PDO实例。如果连接失败,$sql将为空。。。检查的一个好方法是:

$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
}

你有什么问题吗,或者你只是在报告你目前的发展状况?