PHP MySQL,不返回数据,即使它在数据库中

PHP MySQL, data not returned, even though it is in database

所以我现在做的项目是在Cloud9开发平台上搭建的,遇到了问题。这个特定的 MySQL 查询缺少其中一个列数据,它只是拒绝 return 它。

我的部分登录代码,带查询;

http://i.stack.imgur.com/kmx9O.png

在代码中:

$sql_command = "SELECT Salt FROM User WHERE Name ='" . $username . "';";
    $result = $conn->query($sql_command);

    if($result->num_rows > 0)
    {
        //echo "<p> username: ". $username . "</p>";
        //echo "<p> password: ".$password . "</p>";

        $salt = $result->fetch_array()[0];

        //echo "<p>salt " . $salt . "</p>";
        $hashed_password =  hash("sha256", $salt . $password);

        $sql_command = "SELECT `ID`, `Status` FROM User WHERE Password ='" . $hashed_password .
                        "' AND Name = '" . $username . "';";
        $result = $conn->query($sql_command);

        //echo $hashed_password;
        if($result->num_rows > 0)
        {

            $user = $result->fetch_array()[0];
            $status = $result->fetch_array()[1];

            if($status != -1)
            {
                $_SESSION['login_user'] = $user;
                $_SESSION['login_status'] = $status;
                $_SESSION['login_user_name'] = $username;
            }

有问题的数据,状态列;

http://puu.sh/ec3fP/de1e63b384.png

唯一没有 return 任何数据的列是“状态”列。

所有其他查询都工作正常。

列status为int类型,长度为11。没有其他特别之处。

$result->fetch_array(),如果像你这样多次运行,每次都会跳到下一行,因此它会尝试从你的查询结果的第二行获取状态,这不存在。

您可以使用例如

 $data = $result->fetch_array();
 $user = $data[0];
 $status = $data[1];

不是拒绝取数组。它 DID - 你只是扔掉了结果:

这会获取一行:

  $user = $result->fetch_array()[0];

这会获取 NEXT 行:

  $status = $result->fetch_array()[1];

大概您的查询只会 return 一行,因此第二次提取将 return 布尔值 false,表示 "no more data"。

您的代码应该是:

$row = $result->fetch_array();
$user = $row[0];
$status = $row[1];