php - 使用 PHP 和 HTML Select 创建多个 MySQL 过滤器

标签 php mysql

我正在尝试创建一个 PHP 脚本来过滤来自 MySQL 数据库的数据。使用 HTML Select 标签选择过滤器。

问题是,过滤器有很多,用户可能只能选择其中的一部分。我很困惑如何使用 PHP 动态调整 MySQL select 语句,以便它只使用用户选择的那些过滤器。也就是说,如果用户选择 SchoolType 和 District。查询是这样的:

"SELECT * FROM mydatabase 
 WHERE SchoolType='SelectedSchoolType' 
   AND District='SelectedDistrict'"

然后如果用户还在过滤器中选择了县,则 SQL 语句将调整为:

"SELECT * FROM mydatabase 
 WHERE SchoolType='SelectedSchoolType' 
   AND District='SelectedDistrict' 
   AND County='SelectedCounty'"

如何让SQL语句根据选择的过滤器进行调整?

最佳答案

在您的 PHP 页面上,您需要:

  1. 检查选择值(切换)
  2. 根据这些选择构建您的查询(我使用了 implode)
  3. 运行您的查询(像往常一样)

例子:

<?php
$sql = "Select * FROM mydatabase";
$conditions = array();
switch($_POST['select_1']){//you can have mutiple switches
    case "school":
        $conditions[] = "SchoolType = '".$_POST['select_1_text']."'";
        break;
    case "district":
        $conditions[] = "District = '".$_POST['select_1_text']."'";
        break;
    //etecetera
}
if(count($conditions)){
    $sql.= " WHERE ";
    $sql.=implode(" AND",$conditions);
}
//Run your query

检查 this动态查询的相关问题

关于php - 使用 PHP 和 HTML Select 创建多个 MySQL 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38086226/

相关文章:

mysql - 在 Node js 应用程序中将 <用户名>@<计算机名> 更改为 <用户名>@localhost

php - 使用 PHP 从 XML 表中提取 NHL 排名

php - 在为该对象编写类之前为该对象编写模拟/ stub ?

javascript - 带有ajax错误消息的表单提交

PHP多维数组相交

mysql - 删除 SELECT mysql 中的 NULL 单元格?

mysql - 如何使用SQL编辑mysql数据库中某列的多条记录

mysql - 使用第二个表中的数据更新表

mysql - 带外键的简单数据库设计

php - 无法向数据库添加记录