【问题标题】:call to member function prepare error调用成员函数准备错误
【发布时间】:2015-03-05 05:00:06
【问题描述】:

我在执行以下代码时遇到问题。我收到一个错误:致命错误:每次运行时在 C:\xampp\htdocs... 中调用一个成员函数 prepare() on null。由于某种原因,当它即将查询数据库时,它就会出错。

我正在创建一个函数来检查用户名和密码,如果匹配,则将用户登录等等。我要做的是为外部函数提供用户名和密码,然后将这些变量传递给内部函数(checkUser)以检索用户和密码。一旦我将它们放入数组中,我想比较它们是否匹配。如果他们这样做了,那么我想继续(为了简单起见,我把其余的都省略了)。我不知道为什么会收到我遇到的错误,特别是因为它甚至不会在 CheckUser 中运行第 3 行而不会出现致命错误。

这是作业,仅供参考,桌上的卡片。只是想通过这部分。感谢您的帮助。

function isValidUser($username, $password){
     $checker = checkUser($username, $password);
     if ($checker[user_email] == $username && $checker[user_pwd] == $password ) {
         return TRUE;
     }

 }

function checkUser($username, $password) {
    global $db;
    $st = $db -> prepare('SELECT * FROM user WHERE user_email = ? and user_pwd = ?;');
    $st -> bindParam(1, $username);
    $st -> bindParam(2, $password);
    $st -> execute();
    return $st -> fetch(PDO::FETCH_ASSOC);
}

【问题讨论】:

    标签: php sqlite pdo fatal-error


    【解决方案1】:

    试试这个而不是global $db

    $db = $GLOBALS['db'];
    

    【讨论】:

    • 这并没有解决问题,我和另一个错误一起出现了另一个错误,上面写着 Notice: Undefined index: db
    • 是否应该在 $db 通过该行后进行初始化?无论出于何种原因,在我的调试器中,它显示为未初始化...也许这就是问题所在?
    • 所以,我是个白痴,忘记了连接到我的数据库的数据库文件的 include_once。感谢您的评论,没有您就不会找到它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多