2016-01-29 65 views
0

我想要獲取指定用戶名的密碼,將其分配給PHP變量,然後將其打印出來。這是它的代碼 -將MySQL數據庫值分配給PHP變量

$user = $_POST["uname"]; 
$pass = mysqli_query($con, "SELECT pass FROM users WHERE username = '$user'");            
$result = mysqli_fetch_array($pass); 

$specific = $result['pass']; 

echo $specific; 

問題是沒有什麼打印在所有!即使沒有錯誤。我該怎麼辦?

+0

雖然你沒有檢查錯誤.. http://php.net/manual/en/mysqli.error.php你也應該使用預準備語句,這是開放的SQL注入。另外希望密碼被散列。 – chris85

+0

$ result = mysqli_fetch_array($ pass,MYSQLI_ASSOC);用這個。這是爲了將db值轉換爲數組格式。 – ameenulla0007

+0

我只是測試代碼,這不會在任何地方使用。只需檢查基本知識。 –

回答

1
$pass = mysqli_query($con, "SELECT pass FROM users WHERE username = '$user'") or die(mysqli_error($con)); 

這會告訴你正確的錯誤在查詢

+0

在這種情況下,它不顯示任何錯誤。 –

1

逃離你的價值觀和檢查錯誤:

$user = mysqli_escape_string($con, $_POST["uname"]); 
$pass = mysqli_query($con, "SELECT pass FROM users WHERE username = '$user'"); 

# Error checking 
if($pass === false) { 
    echo 'Error: ', mysqli_error($con); 
} 

# Check for no user with that password 
if(mysqli_num_rows($pass) == 0) { 
    echo 'No user with that username.'; 
} 

# Use as associate arary    
$result = mysqli_fetch_assoc($pass); 

$specific = $result['pass']; 

echo $specific; 

編輯:增加了對沒有結果的檢查。

1

假設$con是有你的連接:

$pass = mysqli_query($con, "SELECT pass FROM users WHERE username = '$user'") 

您不能訪問單引號內變量的內容。 看一看這裏Single quotes vs double quotes 這將是更好地使用

$pass = mysqli_query($con, "SELECT pass FROM users WHERE username = $user") 

此外,你可以有

$pass = mysqli_query($con, "SELECT pass FROM users WHERE username = '$user'") or die("Error: ".$mysqli_error($con)); 

在這種情況下,如果mysqli_query()返回true,則整個語句將被視爲真(php logical operators)並且die()部分將不會被執行,但是如果mysqli_query()返回false,則執行die()-知道語句的真實性(或錯誤) - 並停止執行。

您還需要將mysqli_fetch_array($pass);替換爲mysqli_fetch_assoc($pass);才能以關聯方式獲取該行。 (見mysqli_fetch_assoc()