我有一个可能包含 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/