我有一些搜索功能可以使用3个下拉框。根据选择的标准,返回配置文件。 3次下降是:
现在我正在尝试构建一个查询,但刚刚意识到实际上一个人不必从每个下拉列表中选择一个选项,也不需要它们。
因此,例如,在从每个下拉列表中选择一个选项之前,我不想禁用搜索按钮。
从任何下拉列表中选择了一个值,并且可能没有从任何下拉列表中选择任何值,只需单击搜索按钮,我就会了解如何处理未知组合。
我的第一个想法是我可以使用类似真值表的东西,但我想这简直是过度杀伤,事实上这是一个非常常见的功能。
然后我想也许我可以有类似的东西:
$county = "$_GET['county'];";
$constituency = "$_GET['constituency'];";
$gender = "$_GET['gender'];";
然后我可以检查它们是否为空,并以某种方式使用此值,例如
if($county !== '') {
???SOMEHOW MAKE USE OF THIS IN AN SQL QUERY???
PERHAPS PASS IT TO ANOTHER PARAMETER
$sqlparams = "county = '$county'";
}
SELECT * FROM profile
WHERE {$sqlparams};
我认为我在正确的轨道上,但可以使用一些指导。
非常感谢所有帮助。
答案 0 :(得分:1)
我认为这应该是你想要的。
<?php
$tooLookFor = array("county", "constituency", "gender");
foreach($tooLookFor as $key){
if(isset($_GET[$key]) && strlen($_GET[$key])>0){
$queryParams[] = $key.'="'.$_GET[$key].'"';
}
}
$query = "SELECT * FROM profile WHERE ".implode(' AND ', $queryParams);
?>
答案 1 :(得分:1)
您可以执行以下操作:
$county = $_GET['county'];
$constituency = $_GET['constituency'];
$gender = $_GET['gender'];
$sqlparams = array();
if($county !== '') {
$sqlparams[] = "county = '$county'";
}
if($constituency !== '') {
$sqlparams[] = "constituency = '$constituency'";
}
if($gender !== '') {
$sqlparams[] = "gender = '$gender'";
}
$query = "SELECT * FROM profile";
if (count($sqlparams) > 0) {
$query .= " WHERE " . implode(" AND ", $sqlparams);
}
答案 2 :(得分:0)
你可以这样做:
$where = array();
//repeat as needed
$where[$column] = $value;
$where2 = array();
foreach($where as $key => $value){
$where2[] = "$key = '$value'";
}
$where_string = implode(' AND ', $where2);
$where_string
将在WHERE
之后插入字符串。
答案 3 :(得分:0)
是的,你走在正确的轨道上,你还没有找到正确的开关。 ;)
在知道必须使用的内容之前,无法构建查询。首先,在验证中,确定(正如您所做的)关键词实际上是什么以及它们代表什么字段。想必这些映射到表中的字段,可能是3个表?重点是,您的查询需要动态构建。