我的表中有一列 '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/