加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 13:49:08 所属栏目:PHP教程 来源:网络整理
导读:我有这个错误: 致命错误:在第8行的/Applications/XAMPP/xamppfiles/htdocs/login.php中调用非对象的成员函数query() 这条线是这样的: $res = $mysqli-query("SELECT * FROM user WHERE user='$user' and password='$pw'"); 这是login.php: $user = $_POS
我有这个错误:

致命错误:在第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这样的函数来转义输入变量).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读