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」的列。它在查詢中缺失。

    相關問題