Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql_fetch_assoc未按预期工作_Php_Mysql - Fatal编程技术网

php mysql_fetch_assoc未按预期工作

php mysql_fetch_assoc未按预期工作,php,mysql,Php,Mysql,您好,我这里有以下php代码: $username = trim(mysql_real_escape_string($username)); $password = md5(trim(mysql_real_escape_string($password))); $query = "SELECT user_level FROM user WHERE username='$username' AND password='$password'"; $result = m

您好,我这里有以下php代码:

    $username = trim(mysql_real_escape_string($username));
    $password = md5(trim(mysql_real_escape_string($password)));
    $query = "SELECT user_level FROM user WHERE username='$username' AND password='$password'";
    $result = mysql_query($query) or die('query did not go through');
    if($result!=false){
        echo 'result is not false!<br/>';
        while($row = mysql_fetch_assoc($result)){
        echo 'another output to test'.$row['user_level'].'<br/>';
        }
    }
我知道数据库条目存在。。它应该是“1”,但由于某些原因,它没有输出1。我是不是错过了一些我现在无法抓住的小东西

编辑:好的,我已经将用户名更改为用户级别,但它没有得到任何信息。while循环中的回声甚至没有输出任何东西

edit2:我还忘了提到当我输出$result时,它显示资源id 5,所以我知道它从查询中得到了一些东西

编辑3:2/10/2012:只是想让你们知道,获取用户名是一个错误,我的意思是从用户表中的用户获取用户级别

查询的输出为: 该查询是从username='spankerer'和password='246b8ae01899a116369ddcba84f425fd'中选择用户级别的值

打印r$行;未在while循环中显示


编辑4:忘了提到如果我从cmd执行mysql查询,我会得到显示1的user_level表,因此它是正确的

$query = "SELECT user_level, username FROM user WHERE username='$username' AND password='$password'";
编辑

将您的查询也回复为:

 $query = "SELECT user_level, username FROM user WHERE username='$username' AND password='$password'";
echo $query;
在数据库中运行相同的查询,看看它是否提供了什么? 也在while循环中首先做

 while($row = mysql_fetch_assoc($result)){
   print_r($row);
    }

see的输出与直接查询执行的结果相同。

您的select查询应该是

$query = "SELECT user_level, username FROM user WHERE username='$username' AND password='$password'";
编辑

将您的查询也回复为:

 $query = "SELECT user_level, username FROM user WHERE username='$username' AND password='$password'";
echo $query;
在数据库中运行相同的查询,看看它是否提供了什么? 也在while循环中首先做

 while($row = mysql_fetch_assoc($result)){
   print_r($row);
    }

see的输出与您从直接查询执行中获得的结果相同。

您的查询应仅查询用户级别:

$query = "SELECT user_level FROM user WHERE username='$username' AND password='$password'";
编辑:

如果您将while循环更改为:

while($row = mysql_fetch_assoc($result)){
    echo 'another output to test'.$row['user_level'].'<br/>';
}


您的查询应仅查询用户级别:

$query = "SELECT user_level FROM user WHERE username='$username' AND password='$password'";
编辑:

如果您将while循环更改为:

while($row = mysql_fetch_assoc($result)){
    echo 'another output to test'.$row['user_level'].'<br/>';
}


在select参数中,您需要获取名为user\U level的列。它在您的查询中丢失。

在select参数中,您需要获取名为user\U level的列。它在您的查询中丢失。

因此似乎是我的数据库问题


我将密码的最大字符数设置为20,当用户输入密码时,PHP将对其进行哈希运算,并尝试将32个字符的密钥与数据库的20个字符的密钥进行匹配。

因此,这似乎是我的数据库问题


我将密码的最大字符数设置为20,当用户输入密码时,PHP将对其进行散列,并尝试将32个字符的键与数据库的20个字符的键进行匹配。

实际完整输出是什么?您在查询中没有选择用户级别列。实际完整输出是什么?您在查询中没有选择用户级别列。确定,我也查询了user_level,但是while循环没有输出期望值1。$result是资源id5,所以我知道它得到了一些东西。我在while循环中放置了一个echo,它甚至没有进入while循环,因此我的语句可能有问题?好的,我也查询了user_level,但while循环没有输出预期值1。$result是资源id5,所以我知道它得到了一些东西。我在while循环中加入了一个echo,但它似乎没有进入while循环,所以我的语句可能有问题?