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