我在最近三个可选搜索字段(由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
类似的功能?
答案 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