首页 文章

MySQLi查询错误

提问于
浏览
0

在从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 回答

  • 1

    错误消息非常明显 - 您需要先在某处获取$ connection变量 .

    在此脚本中创建mysqli对象或包含创建mysqli对象的某个引导程序文件 .

    但是,此代码的错误消息看起来很奇怪 . 它应该是 Fatal error: Call to a member function prepare() on a non-object .

    所以,似乎你有某种方式的$连接,但它无法准备查询 . 试着这样做

    $sql = "SELECT * FROM user WHERE `username` =  ?";
    $authorize = $connection->prepare($sql) or trigger_error($connection->error);
    

    看看这个查询有什么问题

  • 1

    您尚未创建与MySQL的连接

    您运行查询但PHP如何知道数据库的位置 .

    首先将连接链接到数据库

    $connection = new mysqli("localhost", "root", "", "db_name");
    

    然后继续前进

  • 2

    看起来我没有使用$ statement-> close()来关闭我的上一次连接,这看起来像是问题 . 谢谢大家的帮助!

相关问题