gpt4 book ai didi

php - Mysqli 准备好的语句不工作

转载 作者:行者123 更新时间:2023-11-30 22:24:01 26 4
gpt4 key购买 nike

我有一个用于登录页面的 if 语句。

我一直在尝试将其转换为 mysqli 准备语句。它以前只是普通的 mysqli。

问题是,无论我输入什么 ID,它都会一直提示 ID 无效!而不是切换到正确的页面。

if (isset($_POST['login']))
{
require "connect.php";

session_start();

if (count($_POST) > 0)
{
if ($stmt = mysqli_prepare($conn, "SELECT id, Login_ID, Name, User_Role_ID FROM user WHERE Login_ID = ?"));

$lid = $_POST["id"];

$stmt->bind_param("i", $lid);

$stmt->execute();

$stmt->bind_result($id, $Login_ID, $Name, $User_Role_ID);

$_SESSION["Student_DB_ID"] = $id;
$_SESSION["Login_ID"] = $Login_ID;
$_SESSION["Name"] = $Name;
$_SESSION["User_Role_ID"] = $User_Role_ID;

switch ($User_Role_ID)
{
case "2":
header("Location: ../views/student/");
break; //Student
case "1":
header("Location: ../views/admin/");
break; //Admin
default:
echo "Invalid ID!";
}

/* close statement */
$stmt->close();
$conn->close();

}
}

最佳答案

您需要阅读 mysqli_stmt_fetch() 函数的文档 (http://php.net/manual/en/mysqli-stmt.fetch.php)。该函数仅根据查询是否成功完成返回 bool 值。您需要使用 bind_result() 来返回值。

编辑:

根据下面的评论,这段代码应该可以工作,您还删除了仍然需要的 fetch() 调用:

if (isset($_POST['login'])) {
require "connect.php";

session_start();

if (count($_POST) > 0) {
if ($stmt = mysqli_prepare($conn, "SELECT id, Login_ID, Name, User_Role_ID FROM user WHERE Login_ID = ?")) {
$lid = $_POST["id"];

$stmt->bind_param("i", $lid);
$stmt->execute();
$stmt->bind_result($id, $Login_ID, $Name, $User_Role_ID);
$stmt->fetch();

$_SESSION["Student_DB_ID"] = $id;
$_SESSION["Login_ID"] = $Login_ID;
$_SESSION["Name"] = $Name;
$_SESSION["User_Role_ID"] = $User_Role_ID;

switch ($User_Role_ID) {
case "2":
header("Location: ../views/student/");
break; //Student
case "1":
header("Location: ../views/admin/");
break; //Admin
default:
echo "Invalid ID!";
}

/* close statement */
$stmt->close();
$conn->close();
}
}
}

关于php - Mysqli 准备好的语句不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com