php - 基于多个 GET 变量的动态查询(Refine Search Form)

标签 php mysql forms url get

所以我试图找到一个脚本,它可以让我开始创建一个“优化搜索”面板,这将是一个表单,希望与 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/

相关文章:

php - 准备好的 INSERT 语句以获取 insert_id 以在第二个准备好的 INSERT 语句中使用

php - 使用 JavaScript 比较 PHP 内爆数组与表单字段值时出现不稳定行为

php - Codeigniter 在 View 问题中显示私有(private)消息?

PHP:如何修复此类型提示错误?

javascript - 不再需要时 jQuery/kill 实例

php - 在phpmyadmin中查询两个表

php - 如何安全地将数据传输到服务器?

mysql - 插入查询在 jsp 中不起作用

python - Flask WTForms - 基于多个表单字段的自定义验证器

javascript - <button type ="submit"> onclick 提交两次?