php – 致命错误:在非对象上调用成员函数query()

前端之家收集整理的这篇文章主要介绍了php – 致命错误:在非对象上调用成员函数query()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个错误

致命错误:在第8行的/Applications/XAMPP/xamppfiles/htdocs/login.PHP调用非对象的成员函数query()

这条线是这样的:

$res = $MysqLi->query("SELECT * FROM user WHERE user='$user' and password='$pw'");

这是login.PHP

$user = $_POST['user'];
$pass = $_POST['pass'];
$pw = md5($pass); 
include_once('connect.PHP');

function check_login($user,$pw,&$result){
    $res = $MysqLi->query("SELECT * FROM user WHERE user='$user' and password='$pw'");
    $cont = 0;
    while($row = $res->fetch_object()){
        $cont++;
        $result = $row;
    }
    if($cont == 1){
        return 1;
    }
    else{
        return 0;
    }
}

if(!isset($_SESSION['userid'])){
  if(isset($_POST['login'])){
    if(check_login($user,$result) == 1){
        session_start();
        $_SESSION['userid'] = $result->id_user;
        header("location:index.PHP?var=ok");
    }
    else{
        header('location:index.PHP?var=log');
    }
  }
}

和connect.PHP代码

$MysqLi = new MysqLi('localhost','root','pass','cms' );
if ($MysqLi->connect_error) {
   die('Error de Conexión (' . $MysqLi->connect_errno . ') '
        . $MysqLi->connect_error);
 }

可能是什么问题呢?连接数据库的问题?

这很可能是一个 scoping问题.这意味着您在包含文件中定义的变量$MysqLi不在check_login函数的作用域内(即在此函数中未知).

您可以尝试从全局范围获取$MysqLi变量

function check_login($user,&$result){
    global $MysqLi;
    $res = $MysqLi->query("SELECT * FROM user WHERE user='$user' and password='$pw'");
    // ...

编辑:哦,你还应该注意代码中的sql注入漏洞.使用prepared statements来防止这个问题(或至少使用像mysqli::real_escape_string这样的函数来转义输入变量).

原文链接:https://www.f2er.com/php/138811.html

猜你在找的PHP相关文章