Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理PHP SQL查询中的可选搜索参数_Php_Mysql_Sql - Fatal编程技术网

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

处理PHP SQL查询中的可选搜索参数,php,mysql,sql,Php,Mysql,Sql,我在一个PHP文件中查询我的SQL数据库,最多从三个可选搜索字段(通过jQuery传递)。这些字段中的任何一个、两个或三个都可以在任何时候使用,以使查询尽可能扩展或缩小。如果搜索字段中没有任何内容,则不会返回任何内容 到目前为止,我已经编写了处理非常基本的单搜索查询的代码,并且刚刚开始添加多个参数——这就是开始变得棘手的地方。我可以同时查询两个字段而不需要太多麻烦,但是添加第三个LOCATION参数对于用户可能进行的所有查询可能会占用太多的代码 以下是如何为两个参数设置我的PHP文件: if (

我在一个PHP文件中查询我的SQL数据库,最多从三个可选搜索字段(通过jQuery传递)。这些字段中的任何一个、两个或三个都可以在任何时候使用,以使查询尽可能扩展或缩小。如果搜索字段中没有任何内容,则不会返回任何内容

到目前为止,我已经编写了处理非常基本的单搜索查询的代码,并且刚刚开始添加多个参数——这就是开始变得棘手的地方。我可以同时查询两个字段而不需要太多麻烦,但是添加第三个
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

这不是一个答案,使用
require'../db/connect.php'
在任何情况下,您都可以在该行的顶部添加
require
行谢谢-它似乎为我指明了正确的方向!我对
$where子句=内爆(“,”$where子句)有一个小问题-调试时,我得到一个
数组到字符串的转换
错误。你知道为什么会这样吗?嗯。。它可能不喜欢使用数组变量。更改为:$whereclause=内爆(“,”$whereclauses);