簡體   English   中英

Mysqli准備的語句不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM