2014-01-09 96 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";