2013-08-18 3 views
-2

카탈로그 (이름, ID, 날짜, 가격)에 대해 4 개의 필터가 있습니다. 그것들은 사용자가 데이터베이스의 특정 데이터를보기 위해 입력하는 것입니다. 4 개의 필터는 PHP에서 4^2 (16) sql_queries를 생성합니다. 일부 필터는 null 일 수 있기 때문입니다. 검색어를 줄이는 더 좋은 방법이 있습니까?SQL 필터를 효율적으로 만드는 방법

예 :

if(isset($_POST['filters'])) 
{ 
    $date = $_POST['date']; 
    $timi = $_POST['timi']; 
    $employee = $_POST['dropdown_users']; 
    $proion =$_POST['dropdown_proionta']; 
    $query = ("SELECT * FROM id_of_orders WHERE username='$employee' AND price = '$timi' AND time = '$date' AND proion='$proion'"); 
    $result=mysql_query($query); 
    while($row= mysql_fetch_array($result)) 
    { 
     echo $row['id_order'] . " " . $row['time'] . '<br>'; 
    } 
} 
+1

데이터 필터링의 정확성을 명확히 설명해 주시겠습니까? –

+0

그래서 일부 필터가 비어있는 경우에도 데이터를 반환하고 싶습니다. –

+0

해당 코드에는 16 개가 아닌 하나의 쿼리 만 있습니다. 문제가 무엇인지 이해하는 것은 매우 어렵습니다. – JJJ

답변

2

난 당신이 이런 식으로 뭔가를 찾고 생각 :

$query = "SELECT * FROM id_of_orders WHERE 1=1"; 
if(!empty($employee)) 
    $query .= " AND username='$employee'"; 
if(!empty($timi)) 
    $query .= " AND price='$timi'"; 
if(!empty($date)) 
    $query .= " AND time='$date'"; 
if(!empty($proion)) 
    $query .= " AND proion='$proion'"; 

입력 필터 조건으로 사용됩니다 동안 어떤 쿼리 조건이 빈 필터에 추가되지 않습니다이 방법 결과.

관련 문제