你好,我这里有以下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循环中的回声甚至没有输出任何内容。
edit2:我还忘了提到,当我输出$result时,它会显示资源id #5,所以我知道它从查询中得到了一些东西。
编辑3:(2012年2月10日):只是想让你们知道,获取用户名是一个错误,我的意思是从user表中的用户获取user_level。
查询的输出是:查询是这个值SELECT user_level FROM user WHERE username='spankerer‘AND password='246b8ae01899a116369ddcba84f425fd’
% print_r($row);未显示在while循环中。
编辑4:忘记提到如果我从cmd执行mysql查询,我得到的user_level表显示1,所以它是正确的。
发布于 2012-02-11 13:22:46
所以这似乎是我的数据库问题...
我将密码的最大字符数设置为20,当用户输入密码时,PHP将对其进行散列处理,并尝试将32个字符的密钥与数据库的20个字符的密钥进行匹配。
发布于 2012-02-10 13:58:15
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);
}请看,输出结果与直接执行查询得到的输出相同。
发布于 2012-02-10 14:00:38
您的查询应仅查询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/>';
}https://stackoverflow.com/questions/9223350
复制相似问题