2016-08-09 174 views
-2

有問題我有一個查詢,即時確定是正確的,但可惜它不是。這是說我不知道​​是什麼原因導致了這個問題。這裏是我的PHP腳本。與選擇查詢

$con = mysqli_connect($DB_HOST,$DB_USER,$DB_PASSWORD,$DB_DATABASE); 
if(!$con){ 
echo "Connection Error...".mysqli_connect_error(); 
} 
else 
{ 
echo "Database connection Success..."; 
} 

$user_name = $_POST["login_name"]; 
$user_pass = $_POST["login_pass"]; 

$sql_query = "SELECT name from user_info where user_name like '$user_name' 
and user_pass like '$user_pass'"; 
$result = mysqli_query($con,$sql_query); 

if(mysqli_num_rows($result)>0) 
{ 
$row = mysqli_fetch_assoc($result); 
$name = $row ["name"]; 
echo "Hello welcome".$name; 

} 

else { 
echo "No user found"; 

} 




?> 
+2

不僅你缺少引號,你的代碼可以廣泛應用於[SQL注入](http://stackoverflow.com/documentation/php/275/using-a-database/2685/preventing-sql-injection-with -parametrized查詢)。您也不應該將密碼存儲爲純文本。使用[密碼哈希來保護它們](http://stackoverflow.com/documentation/php/530/password-hashing-functions) – Machavity

+0

你得到什麼錯誤(檢查你的錯誤日誌),你是什麼意思你說它不工作?查詢是否正在運行?你得到任何輸出?這個問題甚至缺乏基本的調試嘗試,比如在變量上執行'var_dump'來仔細檢查它們的值。 var_dump查詢,檢查它看起來是否正確。 var_dump結果並檢查它沒有返回false/null。 var_dump num_rows查看返回的行數。在另一個程序中運行查詢以查看是否有行返回。仔細檢查表中有一行應該與你期望的行相匹配...... etc –

+0

它不會從數據庫中選擇名稱 – Zanzi

回答

0

你忘了把你的查詢字符串換成引號。 您正在將查詢寫入您的PHP變量,因此它必須用引號括起來。

$sql_query = "SELECT name from user_info where user_name like '{$user_name}' and user_pass like '{$user_pass'}"; 
2

您還沒有引用引號!記住$query是一個字符串!

$con = mysqli_connect($DB_HOST,$DB_USER,$DB_PASSWORD,$DB_DATABASE); 

if(!$con) { 
echo "Connection Error...".mysqli_connect_error(); 
} else { 
echo "Database connection Success..."; 
} 

$user_name = $_POST["login_name"]; 
$user_pass = $_POST["login_pass"]; 

$sql_query = "SELECT name from user_info WHERE user_name like '$user_name' 
and user_pass like '$user_pass'"; 
$result = mysqli_query($con,$sql_query); 

if(mysqli_num_rows($result)>0) { 
    $row = mysqli_fetch_assoc($result); 
    $name = $row ["name"]; 
    echo "Hello welcome".$name; 
} else { 
    echo "No user found"; 
} 
0

您遇到過什麼樣的錯誤?

您的查詢應該是一個字符串,這意味着你將需要分配當它與引號括起來:

$sql_query = "SELECT name from user_info where user_name like '" . $user_name 
. "' and user_pass like '" . $user_pass . "'"; 

,你也可以使用這個語法:

$sql_query = "SELECT name from user_info where user_name like '{$user_name}' and user_pass like '{$user_pass}'"; 

這意志,然而讓你打開SQL注入攻擊。 有關更多信息,請參閱this part of the PHP documentation

+0

我的查詢是一個字符串我正在嘗試一切,忘記把它放回問題,所以即使字符串它仍然無法正常工作 – Zanzi