2013-08-18 103 views
-2

我有4個過濾器的目錄(名稱,ID,日期,價格)。這些是來自用戶的輸入以查看來自數據庫的特定數據。這4個過濾器將在php上產生4^2(16)個sql_queries,因爲某些過濾器可能爲空。有沒有更好的方法來減少查詢?如何使SQL過濾器高效php

例如:

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'"; 

這樣沒有查詢條件,增加了空濾器,而進入過濾器將被用作條件結果。