2010-05-16 82 views
6

我使用GET方法從url中檢索值,然後使用if語句來確定它們是否存在,然後根據數據庫查詢它們以僅顯示與它們匹配的項目,但我得到一個未知錯誤你的申請。這裏是我的代碼mysql_query where語句

$province = $_GET['province']; 
$city = $_GET['city']; 

if(isset($province) && isset($city)) {   
    $results3 = mysql_query("SELECT * 
          FROM generalinfo 
          WHERE province = $province 
          AND city = $city ") 
         or die("An unknown error occurred with your request");   
} else {    
    $results3 = mysql_query("SELECT * FROM generalinfo"); 
} /*if statement ends*/ 

回答

6

您在SQL需要單引號圓你的字符串:

"SELECT * FROM generalinfo WHERE province='$province' AND city='$city'" 

注意,以這種方式構建查詢可以讓你在一個SQL注入vulnerabillity的風險。考慮使用mysql_real_escape_string來代替。

"SELECT * FROM generalinfo WHERE province='" . 
mysql_real_escape_string($province) . "' AND city='" . 
mysql_real_escape_string($city) . "'" 
+0

+1因爲處理用戶輸入的唯一正確方法是轉義它。 – 2010-05-16 22:07:16

+1

+1答案沒有安全漏洞。考慮參數化查詢('mysqli'/PDO)。 – bobince 2010-05-16 22:14:58

+0

感謝您的快速反應,這完美的工作,我包括逃生選項。 – 2010-05-16 23:57:46