php - mysqli 语句准备有问题
问题描述
我的 PHP 代码有错误。此语句 header("Location: /pluto_project/index.php?error=nouser"); 在我的 else 语句中总是被执行。
我只是 PHP 的新手,我对所有事情都没有广泛的了解。请帮我。非常感谢。
<?php
if(isset($_POST['submit']))
{
require 'database_handler.inc.php';
$user_name = $_POST['name'];
$password = $_POST['password'];
if(empty($user_name) || empty($password) ) {
header("Location: /pluto_project/index.php?error=emptyFields&username=".$user_name);
exit();
}
else{
$sql = "SELECT * FROM users WHERE username=?";
$statement = mysqli_stmt_init($connection);
if(!mysqli_stmt_prepare($statement, $sql)){
header("Location: /pluto_project/index.php?error=sqlError");
exit();
}
else{
mysqli_stmt_bind_param($statement, "s", $username);
mysqli_stmt_execute($statement);
$result = mysqli_stmt_get_result($statement);
if($row = mysqli_fetch_assoc($result) ){
$password_check = password_verify($password, $row['upassword']);
if(!$password_check){
header("Location: /pluto_project/index.php?error=wrongpassword");
exit();
}
else if($password_check){
session_start();
$_SESSION['userID'] = $row['id_user'];
$_SESSION['userName'] = $row['username'];
header("Location: /pluto_project/index.php?login=success");
exit();
}
else{
header("Location: /pluto_project/index.php?error=sqlError");
exit();
}
}
else{
header("Location: /pluto_project/index.php?error=nouser");
exit();
}
}
}
}
else{
header("Location: /pluto_project/index.php");
exit();
}
解决方案
您在 sql 语句中使用了未定义的变量。在您的绑定中,您引用$username
但在您的变量定义中定义$user_name
.
// wrong code
$user_name = $_POST['name'];
mysqli_stmt_bind_param($statement, "s", $username);
// fixed code
$user_name = $_POST['name'];
mysqli_stmt_bind_param($statement, "s", $user_name);
尝试更改语句/变量以匹配您的声明。
推荐阅读
- c# - MT4 Manager API 如何获取开仓头寸
- python-3.x - 如果数据框中存在值,则将值设为索引并用 1 替换值
- html - Html-loader + file-loader 未绑定正确的图像源
- clang - clang/llvm 编译致命错误:找不到“cstdarg”文件
- c# - 从json的listview中显示listview
- c++ - 可能平凡可构造类型的聚合初始化。隐藏基类可能吗?
- android - 自动 BLE 断开连接 - Windows10、Android
- sql - 如果传递零,则参数化存储过程跳过
- java - @拆机后,睡眠 100 毫秒,测试全部通过
- forms - xamarin 形成选择器将选定的值绑定到 NgModel,如 angular