2013-03-13 53 views
0

我有一個房地產搜索表單上的一個領域要求從最小到最大臥室數量。 PHP查詢解壓縮返回搜索結果是;如何獲取更大的價值和使用PHP查詢

//check bedrooms 
if(!empty($_GET["room_no_min"]) && is_numeric($_GET["room_no_min"])){ 
    $query[] = "'No_Bedrooms' >= '".$_GET["room_no_min"]."'"; 
    $room_min_val = $_GET["room_no_min"]; 
} 
if(!empty($_GET["room_no_max"])){ 
    $query[] = "'No_Bedrooms' <= '".$_GET["room_no_max"]."'"; 
    $room_max_val = $_GET["room_no_max"]; 
} 

這很好,但我想它要考慮到,如果有人進入價值5(分)2(最大值),即反過來比他們猜想。我不想使用驗證我寧願查詢可能類似from =>min(room_no_min,room_no_max)<= max(room_no_min,room_no_max),但不知道如何重新編寫查詢。

+0

請參閱http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php – WouterH 2013-03-13 15:57:33

+0

的數據庫引擎你正在用嗎? – Ares 2013-03-13 15:57:57

+0

我正在使用PHP 5?那是什麼意思? – Naz 2013-03-13 16:23:16

回答

2

爲什麼不使用PHP max()和min()函數?

$room_min_val = min($_GET["room_no_min"], $_GET["room_no_max"]); 
$room_max_val = max($_GET["room_no_min"], $_GET["room_no_max"]); 

更新的代碼:

if(!empty($_GET["room_no_min"]) && is_numeric($_GET["room_no_min"])){ 
    $room_min_val = $_GET["room_no_min"]; 
} // else throw an error maybe? 
if(!empty($_GET["room_no_max"]) && is_numeric($_GET["room_no_max"])){ 
    $room_max_val = $_GET["room_no_max"]; 
} // else throw an error maybe? 

$room_min_val = min($_GET["room_no_min"], $_GET["room_no_max"]); 
$room_max_val = max($_GET["room_no_min"], $_GET["room_no_max"]); 

$query[] = "'No_Bedrooms' >= '".$room_min_val."'"; 
$query[] = "'No_Bedrooms' <= '".$room_max_val."'"; 
+0

我無法使用代碼.e.g $ query [] =「'No_Bedrooms'> ='」。$ _ GET [「room_no_min」]。「'」;也許我把點/逗號放在錯誤的地方或什麼的。 – Naz 2013-03-13 16:25:23

+0

你做錯了朋友。查看我更新的代碼。還要對你的SQL做些什麼,這是非常不安全的。 – Husman 2013-03-13 16:32:28

+0

謝謝。我知道什麼和SQL注入是,但a)所有領域都下降,是否仍然敏感和b)我能做些什麼。 – Naz 2013-03-13 17:34:01