2016-08-04 7 views
0

検索バーに、ユーザーが入力するパラメーターに基づいて特定のプロパティーを検索させたい。これは、これまでの私のコードではありません:SQL SELECTステートメント内の複数の演算子

if (isset($_POST["Search"])) { 
     $SearchInput = $_POST["Search"]; 
     $SearchInput = trim($SearchInput); 
     $SearchInput = stripslashes($SearchInput); 
     $SearchInput = htmlspecialchars($SearchInput); 
     $price1=$_POST['amount1']; 
     $price2=$_POST['amount2']; 

     if ($CH == 'on' || $CF == 'on') { 
     $critera .= " AND (street LIKE '%" . $SearchInput . "%' OR postcode LIKE '%" . $SearchInput . "%') AND price BETWEEN '$price1' AND '$price2'"; 
     } 
     else{ 
     $critera .= " AND type='House' AND (street LIKE '%" . $SearchInput . "%' OR postcode LIKE '%" . $SearchInput . "%') AND price BETWEEN ('$price1' AND '$price2')"; 
     } 
    } 
    if ($SearchInput == ''){ 
     $query = "SELECT * FROM property WHERE type='House' AND city='Sheffield' AND price BETWEEN ('$price1' AND '$price2') Order By postcode ASC"; 
    } 
    else { 
    $query = "SELECT * FROM property WHERE city='Sheffield'" . $critera . " Order By postcode ASC"; 
    } 
    } 

どんなに私はそれがタイプ=「ハウス」パラメータを無視するか、価格パラメータを無視するのいずれかの演算子を注文する方法。

+1

を使用することはできませんでの間であなたのコードは、[SQL-注射](http://stackoverflow.com/questions/60174/に対して脆弱であるため、この文は、間違っていますhow-can-i-prevent-sql-injection-in-php)を使用します。 Prepared、Parameterized Queriesを使用してください。 –

+0

演算子の優先順位のような何かと呼ばれる基本的な数学のクラスで学んだはずの括弧を使ったことがあります – developerwjk

+0

スペースの不足のために 'AND type = 'House''を無視しました。 $ critera。= "AND type = 'House''を' $ critera。= "に変更し、AND type =' House'' – developerwjk

答えて

0
AND type='House' AND (street LIKE '%" . $SearchInput . "%' OR postcode LIKE '%" . $SearchInput . "%') AND price BETWEEN ('$price1' AND '$price2') 

あなたはparanthesis

BETWEEN ('$price1' AND '$price2') 
関連する問題