php - 带有可选过滤器的 MySQL 查询

标签 php mysql

我的表中有一列 'x' 为 1 或 0。我需要一个 MySQL 查询返回所有行,或者返回 x = 1 或 x = 0 的行。

我想要的三个结果中的哪一个设置在变量 $type 中。我所做的是创建三个查询和一个 if 子句:

if ($type == 'all') $query = "SELECT * FROM contracts";
elseif ($type == 'n') $query = "SELECT * FROM contracts WHERE x = '0'";
elseif ($type == 'f') $query = "SELECT * FROM contracts WHERE x = '1'";

这行得通,但对我来说似乎不是最佳解决方案,因为我必须写 3 次几乎相同的查询,如果我想更改某些内容,我必须更改 3 次。

我试着让 $type = '', 0 or 1 然后 WHERE x = '$type' 但那没有用。

我如何只使用一个 MySQL 查询来做到这一点?

最佳答案

if ($type = 'all') {
    $filter = '';
} elseif ($type == 'n') {
    $filter = "WHERE x = '0'";
} elseif ($type == 'f') {
    $filter = "WHERE x = '1'";
} else {
    die("Invalid filter type: $type");
}
$query = "SELECT * FROM contracts $filter";

如果您使用 $type = '', 0, or 1 方案,您可以:

$query = "SELECT * FROM contracts";
if ($type !== '') {
    $query .= " WHERE x = '$type'";
}

关于php - 带有可选过滤器的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354119/

相关文章:

php - 如何在使用 RecursiveArrayIterator 时更改数组键和值?

php - 使用数据库级 MD5 函数是否比应用程序级函数具有更大的安全风险?

mysql - 在查询 "LIMIT 1"中使用 "SELECT 1 ..."有意义吗?

php - 有没有办法提高这个查询的性能

mysql - 插入这些数据最快的方法是什么

php - 如何在PHP中获取下个月

php - 如何使用变量从php mysql中的两个表中减去

php - 无法让 Laravel 同事工作

php - 根据 2 个表的 MYSQL 结果显示特定的 img。选择,PHP

php - 消息系统,存储在数据库中还是文件系统中更好?