我是一名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)) {