您好我在这里有以下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.我错过了一些非常小的东西,我现在无法捕捉到这一点吗?
编辑:确定我已将用户名更改为user_level,但它没有得到任何内容。 while循环中的echo甚至不输出任何内容。
edit2:我也忘记提及当我输出$ result时它说资源ID#5所以我知道它从查询中得到了一些东西。
编辑3:(2/10/2012):只是为了让你们知道,获取用户名是错误的,我的意思是从用户表中的用户那里得到user_level。
查询的输出是: 查询是此值SELECT user_level FROM user WHERE username ='spankerer'AND password ='246b8ae01899a116369ddcba84f425fd'
的print_r($行);没有在while循环中显示。
编辑4:忘了提一下如果我从cmd做mysql查询,我得到user_level表,显示1是正确的。
答案 0 :(得分:3)
您的选择查询应该像
$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);
}
并查看与直接查询执行相同的输出。
答案 1 :(得分:1)
您的查询应该只查询user_level:
$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/>';
}
到
while($row = mysql_fetch_array($result)){
echo 'another output to test'.$row['user_level'].'<br/>';
}
答案 2 :(得分:1)
在select参数中,您需要获取名为“user_level”的列。查询中缺少该列。
答案 3 :(得分:0)
所以它似乎是我的数据库问题......
我将密码的最大字符数设置为20,当用户输入密码时,PHP会将其哈希并尝试将32字符键与数据库的20个字符键匹配。