我有这个错误:
致命错误:在第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,$pw,$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,$pw,&$result){
global $mysqli;
$res = $mysqli->query("SELECT * FROM user WHERE user='$user' and password='$pw'");
// ...
编辑:哦,您还应该注意代码中的SQL注入漏洞。使用prepared statements可以防止此问题(或至少使用mysqli::real_escape_string
之类的函数来转义输入变量)。
有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…
php:拆分字符串,直到第一次出现数字 - php我有像cream 100G sup 5mg Children 我想在第一次出现数字之前将其拆分。所以结果应该是array( array('cream','100G'), array('sup','5mg Children') ); 可以告诉我如何为此创建图案吗?我试过了list(…
codeigniter 2.0.3-致命错误 - php我是Codeigniter的新手,尝试了其中一个教程的课程,但抛出以下错误:Class 'Controller' not found in C:\xampp\htdocs\CodeIgniter\application\controllers\email.php on line 3 我的代码:<?php class Email ex…