在非对象MySQLi上调用成员函数query()

时间:2015-02-07 17:29:07

标签: php mysql mysqli

好的,我正在学习MySQLi,我很难让我的登录脚本表现得很好。它给我一个关于非对象错误的成员函数query()的调用。根据我的阅读,这可能是因为我没有MySQLi的范围。我无法看到错误的位置,如果有人可以指出并向我解释这个问题,我会很高兴。

<?php session_start(); // Start PHP
// Get info sent to server from login form.
$my_username = $_POST['username'];
$my_password = $_POST['password'];
// MD5 Encrypt the password.
$my_password_md5 = md5($my_password);
// Define MySQL Information.
$db = new MySQLi('localhost', 'DBUSERNAME', 'DBPASS!', 'DB');
if ($db->connect_error) {
$error = $db->connect_error;
}
// Check table for username provided.
$sql="SELECT * FROM TABLE WHERE username='$my_username' and password='$my_password_md5'".
//this is where the error occurs
$result=$db->conn->query($sql) or die("Error in the consult.." . mysqli_error($db));
$rows=mysqli_fetch_assoc($result);
// Count how many rows match that information.
$count=mysqli_num_rows($result);
// Check if there are any matches.
if($count==1){
// If so, register $my_username, $my_password and redirect to the index page.
ini_set("session.gc_maxlifetime", "18000"); 
session_cache_expire(18000);
$cache_expire = session_cache_expire();
$_SESSION['username'] = $my_username;
$_SESSION['id'] = $rows['id'];
header("location:WEBSITE");
}

// If not, redirect back to the index page and provide an error.
else {
header("location:WEBSITE");
}
// End PHP
?>

1 个答案:

答案 0 :(得分:1)

Call to a member function query() on a non-object表示您尝试在不是对象的内容上调用函数query()。您正在调用$db->conn->query($sql),因此$db->conn不是对象。 $db是一个Mysqli对象。 Reading the documentation了解到我们没有MySQLi::conn这样的东西。

我假设您要拨打MySQLi::query(...)docs)。将代码更改为$db->query($sql),您的问题就会消失。