所以我试图找到一个脚本,它可以让我开始创建一个“优化搜索”面板,这将是一个表单,希望与 Ebay 目前所拥有的东西接近。
虽然我知道这将是一个表单并使用 GET 方法,但我找不到可以为多个参数解析 url 并动态更新查询的脚本。
如果没有一百万个 if 语句,我不太确定如何做到这一点。 (大约 10 个左右可能的 GET 变量,但很快就会更多。)
所以我需要一个简单的:
foreach GET add WHERE field=GET[variable]
您知道任何现成的脚本吗?
最佳答案
我不知道有什么固定脚本可以做到这一点。
但是自己写还是很容易的。
<?PHP
$valid_fields = array('field1','field2',...'fieldN');
$where = "WHERE 1=1 ";
foreach($valid_fields as $fname){
if (! empty($_GET[$fname])){
$where .= " AND $fname='" . mysql_real_escape_string($_GET[$fname]) ."'";
}
}
此代码简单地遍历您预期的输入变量,如果它们作为 $_GET 中的参数传递,则在 WHERE 子句中添加一个 AND。
然后您只需将 $where 添加到查询的末尾(无论它恰好是什么):
$sql = 'SELECT * FROM some_table ' . $where;
编辑示例代码以隐藏列名:
<?PHP
//keys are parameter names in _GET, values are database column names.
$fieldmap = array(
'fname'=>'first_name',
'lname'=>'last_name'
);
$where = '1=1 ';
foreach($fieldmap as $get_name => $col_name){
if (! empty($_GET[$get_name])){
$where .= " AND $col_name = '" . mysql_real_escape_string($_GET[$get_name]) . "'";
}
}
?>
关于php - 基于多个 GET 变量的动态查询(Refine Search Form),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1452315/