2016-02-19 42 views
0

大家好,我的問題在於我的下面的代碼,變量$ uname是從一個http文章中聲明的,但由於某種原因,打印出的err日誌保持空白,它應該顯示結果MySQL的查詢表PHP和Mysql的問題

字段被稱爲姓名(無上限)

$da= mysqli_query($c, 
      "SELECT * FROM users WHERE username='".$uname."'") or die(mysqli_error($c)); 


while ($row = mysqli_fetch_assoc($da)) { 



       error_log("User $Uname: match."); 
       error_log("FN : ".$row['firstname'].""); 


      } 

任何想法?

+1

您使用'$ Uname'而不是'$ uname' - php變量區分大小寫 – Derek

+0

http://php.net/manual/en/function.error-reporting.php –

+0

另外,請參閱準備好的語句 – Strawberry

回答

0

添加消息告訴你是否沒有查詢結果。

由於只能有一個用戶使用給定的用戶名(我假設),所以不需要while循環。只需取一行。

$row = mysqli_fetch_assoc($da)); 
if ($row) { 
    error_log("User $uname: match."); 
    error_log("FN : ".$row['firstname'].""); 
} else { 
    error_log("User $uname: no match."); 
} 

你也有一個錯字在你echo聲明,$Uname應該已經$uname

0

首先使用一個準備好的語句:出於安全原因,你永遠不應該信任用戶輸入,準備好的語句會爲你逃避。

除此之外,我只看到,爲什麼沒有被記錄兩方面的原因:

  • 錯誤報告被關閉
  • 查詢將返回一個空的(因爲你希望看到有什麼這似乎不太可能)結果集和while循環跳過

嘗試打印$uname或完整的查詢和執行它