[英]Mysqli Prepared Statement not wokring
我有一個用於登錄頁面的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 )。 該函數僅根據查詢是否成功完成而返回布爾值。 您需要使用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();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.