php - 通过 MySQL 搜索查询传递多个 $_POST 字段

标签 php mysql

我有一个可能包含 15 个左右字段的搜索表单,但是并非所有字段都需要进行搜索,例如;

用户可能会搜索在“伦敦”从事“金融”工作的注册用户,但将所有其他字段留空,例如 $availability 或 $salary 等,因此 $_POST 数据可能类似于:

$location = $_POST['location'];    // Value - London
$sector = $_POST['sector'];        // Value - Finance
$available = $_POST['available'];  // Value - Any
$salary = $_POST['salary'];        // Value - Any

请记住,我可能还有来自其他字段的另外 12 个左右的“任何”值,查询数据库 (PHP/MySQL) 以返回结果的最佳方式是什么,而无需循环可能有数十个查询。

为了更清楚一点,我想要的是一个查询,它的工作方式类似于(故意的伪代码):

SELECT * FROM table where location = 'location' AND if($availability !='Any') { available = '$available' } etc etc

这样的事情可能吗?

或者我可以创建一个包含 !='Any' 的所有 $_POST 字段的单个字符串,然后对包含字符串中所有单词的行执行搜索(我认为这在理论上可行)?

我希望这对某人有意义,并且您可以为我指明正确的方向。

附言在与数据库交互之前,所有 $_POST 都被转义和保护,只是不包括在这里:)

最佳答案

试试这个:

$sql = "SELECT * FROM table where 1 ";
foreach ($_POST as $key => $post) {
    if ($post != 'Any') {
        $sql .= " AND $key = '$post' ";
    }
}

// now you can run $sql against the database

关于php - 通过 MySQL 搜索查询传递多个 $_POST 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15234165/

相关文章:

php - 如何使用 PHP 将大文本插入数据库?

mysql - 无法在 Linux 中启动 MySQL

php - 如何在我的基于 PHP 的网站中添加 "View more results"类功能?

javascript - 为 Highchart 图表传递动态 php 值

php - 谷歌图表; arrayToDataTable,如何指定列类型?

php - 用另一个数据库的结果填充数据库?

PHP循环替换字符串 "one-by-one"中的字符

mysql - sql时间查询大于/小于

php - JSON 无法正确显示 mysql 数据 :using php

php - 有一个Mysql包装类来支持mysqli的一些功能