-4

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

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

4

1 回答 1

0

在运行查询之前,您需要检查并确保 $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
}
于 2013-08-03T04:19:11.927 回答