Mysqli准备的语句不起作用

用户名

我有一个用于登录页面的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/zh/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();
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP MySQLi准备的语句不起作用

来自分类Dev

PHP MySQLi准备的语句不起作用

来自分类Dev

Mysqli准备的语句选择不起作用

来自分类Dev

mysqli以登录形式准备的语句不起作用?

来自分类Dev

准备好的语句不起作用

来自分类Dev

JDBC准备语句不起作用

来自分类Dev

准备好的语句不起作用

来自分类Dev

我的SQL准备语句不起作用

来自分类Dev

准备好的语句不起作用

来自分类Dev

我的 MySQL 准备语句不起作用

来自分类Dev

Mysqli Prepare语句不起作用

来自分类Dev

mysqli语句在php下不起作用

来自分类Dev

QSqlQueryModel准备好的语句(使用QSqlQuery)不起作用

来自分类Dev

PHP准备好的语句不起作用

来自分类Dev

PHP准备语句中的问号不起作用?

来自分类Dev

PDO命名准备好的语句不起作用

来自分类Dev

关于MySQL的准备好的语句不起作用

来自分类Dev

PDO更新准备好的语句不起作用

来自分类Dev

Java mysql准备的语句更新不起作用

来自分类Dev

database.query准备语句绑定不起作用

来自分类Dev

简单的带占位符的预准备语句不起作用

来自分类Dev

PHP准备好的语句不起作用

来自分类Dev

经典ASP预准备语句SELECT不起作用

来自分类Dev

带有 COUNT(..) 的简单准备语句不起作用

来自分类Dev

mysqli_query在If语句中不起作用

来自分类Dev

mysqli_query在If语句中不起作用

来自分类Dev

mysqli准备语句中“ if”语句的作用是什么

来自分类Dev

MySQLi查询不起作用

来自分类Dev

mysqli更新不起作用