在从mysql_ *语句转换到MySQLi之后创建我的第一个项目并且我收到以下错误:“致命错误:在C:\ apache \ www \ Dropbox \ intranet \中的非对象上调用成员函数bind_param()包括第6行的\ query \ login.php“
<?php
$user_input = htmlspecialchars($_POST['username']);
$authorize = $connection->prepare("SELECT id,full,username,password,email,depid,building,level FROM user WHERE `username` = ?");
//Set the query 'WHERE state = ?' to the query
$authorize->bind_param("s",$user_input);
//Execute the query through MySQLi
$authorize->execute();
//Bind results to their variables
$authorize->bind_result($userid,$fullname,$username,$password,$email,$department,$building,$level);
if ($authorize->fetch()) {
$sanpass = htmlspecialchars($_POST['password']);
if (md5($sanpass) == $password) {
session_start();
$_SESSION['userid'] = $userid;
}
}
?>
任何人都可以帮助我学习如何纠正这个错误?谢谢!
3 回答
错误消息非常明显 - 您需要先在某处获取$ connection变量 .
在此脚本中创建mysqli对象或包含创建mysqli对象的某个引导程序文件 .
但是,此代码的错误消息看起来很奇怪 . 它应该是
Fatal error: Call to a member function prepare() on a non-object
.所以,似乎你有某种方式的$连接,但它无法准备查询 . 试着这样做
看看这个查询有什么问题
您尚未创建与MySQL的连接
您运行查询但PHP如何知道数据库的位置 .
首先将连接链接到数据库
然后继续前进
看起来我没有使用$ statement-> close()来关闭我的上一次连接,这看起来像是问题 . 谢谢大家的帮助!