处理PHP SQL查询中的可选搜索参数

时间:2013-12-28 11:56:59

标签: php mysql sql

我在最近三个可选搜索字段(由jQuery传递)的PHP文件中查询我的SQL数据库。可以随时使用这些字段中的任何一个,两个或三个来使查询像用户喜欢的那样扩展或缩小。如果搜索字段中没有任何内容,则不会返回任何内容。

到目前为止,我已经编写了代码来处理非常基本的一个搜索查询,并且刚刚开始添加多个参数 - 这就是它开始变得棘手的地方。我可以在没有太多麻烦的情况下一起查询两个字段,但添加第三个LOCATION参数开始占用用户可能进行的所有查询可能性的过多代码。

以下是我的PHP文件如何设置两个参数:

if (!empty($_POST['title']) && (!empty($_POST['name']))) 
{
    require '../db/connect.php';
    $sql = "SELECT 
               ....
            FROM 
               ....
            WHERE 
                `table 3`.`TRACKTITLE` = '" . mysql_real_escape_string(trim($_POST['title'])) . "' AND `table 3`.`ARTIST` = '" . mysql_real_escape_string(trim($_POST['name'])) . "'";              
}   


if (!empty($_POST['name']))
 {
    require '../db/connect.php';
    $sql = "SELECT 
              ...
            FROM 
              ...
            WHERE 
              `table 3`.`ARTIST` = '" . mysql_real_escape_string(trim($_POST['name'])) . "'";

}   

if (!empty($_POST['title'])) {
    require '../db/connect.php';
    $sql = "SELECT 
            ...
            FROM 
            ...
            WHERE 
            `table 3`.`TRACKTITLE` = '" . mysql_real_escape_string(trim($_POST['title'])) . "'";
}   

$result = mysql_query($sql);
$data = array();
while ($array = mysql_fetch_assoc($result)) {
$data[] = $array;

在PHP中使用多个可选参数构建查询的最简单方法是什么,考虑到以后可能添加的任何其他参数?我已阅读了isnull个值,但它们是否执行与!emtpy类似的功能?

1 个答案:

答案 0 :(得分:2)

沿着这条路做点什么:

$whereclauses = array();
$subsets = false;

// for every field
if(!empty($_POST['name']))
  {
  $subsets = true;
  $whereclauses[] = " artist = ". mysql_real_escape_string(trim($_POST['name']));
  }

if($subsets)
  {
  $whereclauses = implode(", ". $whereclauses);
  }
else
  {
  $whereclauses ="";
  }

// now build your query