php
  • mysql
  • 2012-02-10 182 views 1 likes 
    1

    你好,我有以下的PHP代码在这里:PHP的mysql_fetch_assoc不能按预期工作

    $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”,但由于某种原因,它不输出我在这里错过了一些非常小的东西,我现在无法理解这些东西吗?

    编辑:好的我已经将用户名更改为user_level,但它没有得到任何东西。 while循环中的回显甚至不会输出任何内容。

    edit2:我也忘记提及当我输出$结果它说资源ID#5,所以我知道它从查询中获取的东西。

    编辑3:(2/10/2012):为了让大家知道,获取用户名是一个错误,我的意思是从用户表中获取user_level。

    输出该查询是: 查询是该值SELECT user_level FROM用户WHERE用户名= 'spankerer' AND口令= '246b8ae01899a116369ddcba84f425fd'

    的print_r($行);没有在while循环中显示。

    编辑4:忘记提及如果我从cmd执行mysql查询,我得到显示1的user_level表,所以它是正确的。

    +0

    什么是实际(完整)输出? – Josh 2012-02-10 05:54:59

    +6

    您并未在查询中选择'user_level'列。 – Wiseguy 2012-02-10 05:56:03

    回答

    0

    所以这似乎是我的数据库问题...

    我设置的最大字符密码为20,当用户放入密码,PHP将哈希,并设法在32个字符匹配键与数据库的20个字符的键。

    2

    你的选择查询应该是这样

    $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); 
        } 
    

    和看到的是相同的输出为u直接执行查询得到。

    +0

    好的,我也查询了user_level,但是while循环没有输出期望值1。 $ result是资源ID#5,所以我知道它获得了一些东西。我在while循环中加入了一个回声,它甚至似乎没有进入while循环,所以我的声明可能会出错。 – Recur 2012-02-10 06:58:20

    +0

    @Recur请参阅我的编辑。 – Astha 2012-02-10 11:29:26

    +0

    请参阅2012年2月10日编辑。感谢所有这些帮助! – Recur 2012-02-10 15:39:03

    1

    你的查询只应user_level查询:

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

    编辑:

    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/>'; 
    } 
    

    请问如果从改变你的while循环它的工作

    1

    在select参数中,您需要获取名为“user_level”的列。它在查询中缺失。

     相关问题

    • 暂无相关问题^_^