php - 如何在 PHP/MySQL 中使用查询字符串过滤结果集?

标签 php mysql filter query-string

我正在构建一个类似于 last.fm/events 的事件页面

用户可以使用查询字符串中传递的参数按日期、类别等过滤事件

我的问题是,构建代码(查询、循环)以允许这些不同的查询类型并可能组合它们(例如按日期类别过滤)的最佳方式是什么

我正在寻找有关如何制作此类页面(可以使用查询字符串过滤的结果集)的实际示例/引用。

最佳答案

构建自定义数据库查询的常见模式:

$sql  = 'SELECT * FROM foo ';
$sql .= 'WHERE 1 ';

if (array_key_exists('category', $_GET)) {
    $sql .= sprintf('AND category_id = %d ', intval($_GET["category"]));
}

if (array_key_exists('date', $_GET)) {
    $sql .= sprintf('AND date = "%s" ', mysql_real_escape_string($_GET["date"]));
}

// and so on...

或者,使用 PDO:

$params = array();

$sql  = 'SELECT * FROM foo ';
$sql .= 'WHERE 1 ';

if (array_key_exists('category', $_GET)) {
    $sql .= 'AND category_id = ? ';
    $params[] = $_GET["category"];
}

if (array_key_exists('date', $_GET)) {
    $sql .= 'AND date = ? ';
    $params[] = $_GET["date"];
}

// and so on...

$stmt = $db->prepare($sql);
$stmt->execute($params);

如果您需要对数据库结果进行额外的过滤,只需使用循环将数据复制到目标数组,并在遇到应从结果中省略的行时继续

关于php - 如何在 PHP/MySQL 中使用查询字符串过滤结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964517/

相关文章:

php - 比较不同领域的日期和时间

PHP:制作引用变量的副本

php - 检查用户名是否已存在于数据库中

mysql - MySQL 中的复杂 SELECT 查询

php - WAMP 服务器为绿色,但仅获得 404

wpf - 使用LINQ vs CollectionView过滤集合

django - 从按最新排序的查询集中获取不同的 Django 对象

php - 使用缓存系统进行 session 存储?

php - 使用文本框和两个下拉菜单在 PHP 页面上搜索和过滤 MySql 结果

wpf - 确定 xamDataGrid 上的筛选器状态