PHP MySQL,数据不返回,即使它在数据库中
因此,我正在从事的项目是在Cloud9开发平台上构建的,我遇到了一个问题。这个特定的MySQL查询缺少一个列数据,它只是拒绝返回它 我的部分登录代码,带查询 代码:PHP MySQL,数据不返回,即使它在数据库中,php,mysql,sql,Php,Mysql,Sql,因此,我正在从事的项目是在Cloud9开发平台上构建的,我遇到了一个问题。这个特定的MySQL查询缺少一个列数据,它只是拒绝返回它 我的部分登录代码,带查询 代码: $sql_command = "SELECT Salt FROM User WHERE Name ='" . $username . "';"; $result = $conn->query($sql_command); if($result->num_rows > 0) {
$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;
}
有问题的数据,状态栏
唯一不返回任何数据的列是Status列
其他每一个查询都可以正常工作
列状态为int类型,长度为11。没有其他特殊特性。$result->fetch\u数组,如果像您这样多次运行,每次都会跳转到下一行,因此它会尝试从您的查询结果的第二行(不存在)获取状态
你可以用
$data = $result->fetch_array();
$user = $data[0];
$status = $data[1];
它并没有拒绝获取数组。确实如此-你只是简单地放弃了结果: 这将获取一行:
$user = $result->fetch_array()[0];
这将获取下一行:
您的查询可能只返回一行,因此第二次获取将返回布尔值false,表示不再返回数据
您的代码应该是:
$row = $result->fetch_array();
$user = $row[0];
$status = $row[1];
请在这里发布您的代码,以便为将来的so访客保留。我建议完全不同的方法。为什么要对数据库进行查询以比较密码。为什么不根据用户名一次选择所有需要的列,然后进行比较呢。没有必要将其分解为两个单独的查询。您可能还想考虑使用PHP的内置PaseWordHASH和PaseWordSuffice函数来避免将盐单独存储在DB表中。您是否尝试从数据库中选择所有*并使用一段时间?$result=fetch_array{$status=$result['status'];echo$status;}///这可能是非常随机的,您的代码编辑器是什么D您提出的问题不完整,请添加更多细节!莫斯塔法,克劳德9号,如回答中所说。也是很有帮助的建议谢谢,就是这样!谢谢你解决了这个问题,尽管这可能只是我的一个简单的后见之明。
$row = $result->fetch_array();
$user = $row[0];
$status = $row[1];