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

标签 php mysql sql

我正在 PHP 文件中从最多三个可选搜索字段(通过 jQuery 传递)查询 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 类似的功能吗?

最佳答案

沿着这条线做一些事情:

$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

关于php - 处理 PHP SQL 查询中的可选搜索参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20814257/

相关文章:

sql - 通过完整外连接查找多个字段的最小日期

php - PHP 7 中的 "Allocation of JIT memory failed, PCRE JIT will be disabled"警告

mysql - 返回表中不存在的记录

php - 为什么 PHP 模板不能从 mySQL 数据库中检索正确的数据?

sql - rails : get parent records having ZERO has_many associations

sql - 从日期范围中检索可用日期

PHP MySQL设置/配置表调用值

php - PHP 中的explode() 问题

php - 如何检测 MySQL 数据库是否正在运行?

mysql - COUNTNULL() 作为 MySQL 函数。它将如何运作?