php mysql_fetch_assoc未按预期工作
您好,我这里有以下php代码: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
$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循环,所以我的语句可能有问题?