在非对象问题上调用成员函数


Call to member function on a non-object problem

我对此有问题:

function do_login() {
global $db;
    $username = $_POST['username'];
    $password = md5($_POST['password']);
    $row = $db->query("SELECT username, password FROM users WHERE username = '$username' AND password = '$password'");
    while ($rows = mysql_fetch_array($row)) {
        if($username == $rows['username'] && $password == $rows['password']) {
            $_SESSION['Logedin'] = true;
            echo 'yah';
        }else{
            echo 'Neh';
        };
    }
}

因为它给了我这个错误:致命错误: 在第 79 行对 C:''xampp''htdocs''falco''admin''class''auth.php 中的非对象调用成员函数 query()

我不知道我错过了什么!谢谢你的帮助

$db可能没有初始化。在上一行中发出var_dump($db);以查看其包含的内容。

此外,您的代码对完整的sql注入开放...在查询中使用任何内容之前,先清理$_GET/$_POST。试试这个用户名,例如:

$_POST['username'] = "admin' OR 1 = 1 OR username='"

我的猜测(这只是一个猜测)是,当您调用以连接到数据库时,您会收到错误代码或错误返回,而不是数据库对象。而且您没有检查此条件,然后像普通变量一样使用它。当然,int 或 false 或其他任何东西都没有查询方法。

这只是一个猜测。