2014-01-09 40 views
0

我有一個HTML表單,人們可以選擇一些或全部關閉來搜索數據庫以查看成員配置文件。PHP MySQL +根據表單選擇創建搜索查詢

一些選項有:

  • 男/女
  • 年齡
  • 位置
  • 複選框像的意圖或興趣

我需要裁縫一個MySQL查詢來滿足成員選擇的選擇。

我在問,因爲我建立了一個像這樣的自定義搜索,它變成了一個完整的混亂與多個查詢取決於選擇什麼。

是否最好只創建一個查詢,並根據選擇的內容添加部件?

有沒有人有ruff的例子?


數據庫模式:

我有許多與相關信息的表,所以我需要使用連接。這表示一切都在一個主鍵PID上工作,所以它們都會加入到這個中。

+0

請問你的數據庫架構的樣子? – BenM

回答

2

你可以做這樣的事情:

<?php 
    $whereClause = ''; 
    if($_GET['gender'] == 'male'){ 
    $whereClause .= ' AND gender = "M"'; 
    } 
    if($_GET['age'] != ''){ 
    $whereClause .= ' AND age = "'.$_GET['age'].'"'; 
    } 
?> 
+0

好,所以從需求中構建WHERE子句,然後執行... – user1105192

+0

是的,但正如你所看到的,我把AND放在每個字符串的開始處,所以它取決於你有什麼東西已經在where子句中,比如'WHERE id = 1'。$ whereClause.'''如果你沒有,你仍然可以使用它,但改變一點 –

1

我會用一個數組:

$where = array(); 
if($_GET["gender"]!=""){ 
    $clean = mysqli_escape_string($db, $_GET["gender"]); 
    array_push($where, "gender = '$clean'"); 
} 
// etc... 
$where = implode(" AND ", $where); 
$sql = "SELECT * FROM table WHERE $where";