Array返回null

时间:2015-01-07 09:46:50

标签: php mysql arrays session login

我正在尝试使用PHP和MySQL创建登录但是我被卡住了。应该从数据库中提供数据的数组只返回“Null”我使用了var_dumb()

这是 index.php 文件:

<?php
include_once './Includes/functions.php';
?>
<!DOCTYPE html
<html>
    <head>
        <meta charset="utf-8">
    </head>

    <body>
        <div>
            <form method="POST">
                <label>User ID :</label>
                <input id="login_username" name="login_username" type="login"><br>
                <label>Password :</label>
                <input id="login_password" name="login_password" type="password" ><br>
                <input id="login_submit" name="login_submit" type="submit">
            </form>
        </div>
    </body>
</html>

这是 function.php 文件:

<?php
    require_once 'dbconnect.php';

    function SignIn() {
        $lUser = $_POST['login_username'];
        $lPassword = md5($_POST['login_password']);
        $querySQL = "SELECT * FROM tblUser WHERE dtUser='$lUser' AND dtPassword='$lPassword'";

    $queryResult = mysqli_query($dbc, $querySQL);
    while ($row = mysqli_fetch_assoc($queryResult)) {
        $dataArrayLogin[] = $row;
    }
    if ($lUser == $dataArrayLogin['dtUser'] && $lPassword == $dataArrayLogin['dtPassword']) {
        echo $dataArrayLogin;
        $popup = "Login Succeed";
        echo "<script type='text/javascript'>alert('$popup');</script>";
        $_SESSION['user'] = $lUser;
        header("Location: ./british.php");
    } else {
        echo $dataArrayLogin;
        $popup = "Login Failed";
        echo "<script type='text/javascript'>alert('$popup');</script>";
    }
}

if (isset($_POST['login_submit'])) {
    SignIn();
}
?>
你可以帮帮我吗?

4 个答案:

答案 0 :(得分:0)

在您的HTML表单中,您没有<form method="POST" action="SignIn">。所以当你提交表格时,它不会去某个地方。

答案 1 :(得分:0)

这可能是,因为你没有结果?

无论如何,我已经检查了你的代码,但这并不好,因为你试图使用它:

$dataArrayLogin['dtUser']

没有&#39;用户&#39;密钥在$dataArrayLogin

获取行时,将其置于while周期,并将数据收集到数组中:

while ($row = mysqli_fetch_assoc($queryResult)) {
    $dataArrayLogin[] = $row;
}

删除while循环。简单使用:

$dataArrayLogin = mysqli_fetch_assoc($queryResult);

如果您echo array,则结果为Array。请改用var_dump

答案 2 :(得分:0)

您需要开始调试脚本。以下是我将采取的步骤:

  • 在$ _POST上执行var_dump()以查看它是否包含您想要的所有值
  • 回显$ querySQL以查看是否所有值都正确放入
  • 检查您的数据库是否包含您尝试登录的记录
  • 使用mysqli_error();
  • 获取mysql错误

这应该可以解决你的错误。

编辑:

  • 我经常发现在我的脚本中放置一些回声有助于找出代码的哪些部分被访问以及哪些部分被跳过。
  • 我会在您的查询中添加一个LIMIT 1,因为只有一个用户输入了凭据。这样你也可以跳过while循环。

答案 3 :(得分:0)

像这样更改查询

$ querySQL =“SELECT * FROM tblUser WHERE dtUser ='”。$ lUser。“'AND dtPassword ='”。$ lPassword。“'”;