我正在 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/