致命错误:对中的非对象调用成员函数prepare()



我是一名android开发人员。我并不精通php。我试着启动应用程序的控制面板。然而,在我上传文件并输入登录凭据后,我出现了这个错误。

致命错误:在login_form.php中对非对象调用成员函数prepare()在线45

我在这个页面上的代码如下:

<?php   
include_once('includes/variables.php');
// start session
//session_start();
// if user click Login button
if(isset($_POST['btnLogin'])){
    // get username and password
    $username = $_POST['username'];
    $password = $_POST['password'];
    // set time for session timeout
    $currentTime = time() + 25200;
    $expired = 3600;
    // create array variable to handle error
    $error = array();
    // check whether $username is empty or not
    if(empty($username)){
        $error['username'] = "*Username should be filled.";
    }
    // check whether $password is empty or not
    if(empty($password)){
        $error['password'] = "*Password should be filled.";
    }
    // if username and password is not empty, check in database
    if(!empty($username) && !empty($password)){
        // change username to lowercase
        $username = strtolower($username);
        //encript password to sha256
        $password = hash('sha256',$username.$password);
        // get data from user table
        $sql_query = "SELECT * 
            FROM tbl_user 
            WHERE username = ? AND password = ?";
        $stmt = $connect->stmt_init();
        if($stmt->prepare($sql_query)) {
            // Bind your variables to replace the ?s
            $stmt->bind_param('ss', $username, $password);
            // Execute query
            $stmt->execute();
            /* store result */
            $stmt->store_result();
            $num = $stmt->num_rows;
            // Close statement object
            $stmt->close();
            if($num == 1){
                $_SESSION['user'] = $username;
                $_SESSION['timeout'] = $currentTime + $expired;
                header("location: dashboard.php");
            }else{
                $error['failed'] = "<span class='blue-text text-darken-2'>Login failed</span>";
            }
        }
    }   
}
?>
<body class="teal">
    <main>
    <br>
    <div class="login-container">
      <div class="col s12">
          <div class="card">
            <div class="card-content">
                  <div class="section center">                  <h5 class="text-center">Login Administrator</h5>
                    <p><?php echo isset($error['failed']) ? $error['failed'] : '';?></p>
                  </div>
                    <form method="post">
                        <div class="row">
                            <div class="input-field col s12">                   
                                <input type="text" class="validate" name="username" id="username" required>
                                <label for="username">Username</label>
                            </div>
                            <div class="input-field col s12">                       
                                <input type="password" class="validate" name="password" id="password" required>
                                <label for="password">Password</label>
                            </div>
                        </div>
                            <input type="submit" name="btnLogin" class="btn-primary btn right" value="Login"><br><br>       
                    </form>
            </div>
            </div>
        </div>
    </div>
    </main>

变量代码为:

<?php
    //database configuration
    $host       = "localhost";
    $user       = "root";
    $pass       = "";
    $database   = "android_news_app";
    $connect    = new mysqli($host, $user, $pass, $database) or die("Error : ".mysql_error());      
?>

有人能帮我吗?

PHP引发此错误是因为,成员函数调用了非对象。由于对象my_sqli的初始化未正确完成,因此出现此问题。在调用prepare方法之前,必须初始化对象,并且必须适当地传递connection should参数,以便创建成功的连接并返回对象。

$host = "my_host"; //"localhost" or "http://mysql.host.com" $user = "my_username"; //an authorized user of the MySQL database $password = "my_password"; //my_username's password $database = "my_database"; //the database we want to use. $mysqli = new mysqli($host, $user, $password, $database); if ($mysqli->connect_error) { die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); } $stmt = $mysqli->stmt_init(); if ($stmt->prepare("some valid SQL query")) { $stmt->bind_params("s...", $vars); $stmt->execute(); $stmt->bind_result($vars); while ($stmt->fetch()) { //do stuff with the data } $stmt->close(); } $mysqli->close();

尝试更改这两行

$stmt = $connect->stmt_init();
if($stmt->prepare($sql_query)) {

对于这个

if ($stmt = $connect->prepare($sql_query)) {

最新更新