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

时间:2015-01-07 14:55:45

标签: php mysql sql

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

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

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

唯一不返回任何数据的列是Status列。

其他所有查询都可以。

列状态是int类型,长度为11。没有其他特殊的特征。

2 个答案:

答案 0 :(得分:1)

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

你可以使用例如

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

答案 1 :(得分:0)

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

这会获取一行:

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

这会获取 NEXT 行:

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

据推测,您的查询只返回一行,因此第二次获取将返回一个布尔值false,表示“没有更多数据”。

您的代码应为:

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