我有这个错误:
致命错误:在第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'); } } }
$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函数的作用域内(即在此函数中未知).
原文链接:https://www.f2er.com/php/138811.htmlfunction 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
这样的函数来转义输入变量).