有疑问。如果我向服务器查询我使用这样的东西:
mysql_query("select * FROM test WHERE car = '$car');
如果我向服务器查询并使用两个标准,我会使用以下内容:
mysql_query("select * FROM test WHERE car = '$car' and color ='$color');
如果我使用AND,所有标准必须全部填写。但有时我不知道第二个标准,它不会工作。我可以使用OR,但如果我知道两个标准,那么它就不会给我准确的数据。
所以我必须在car ='$ car'(变量)color ='$ color'之间制作somekind变量并使用If语句。像这样的东西 - 如果car ='all'则变量= OR。 因此,当我不知道汽车标准时,我将其保留为“全部”并且我知道颜色标准并选择它“蓝色”然后将显示所有蓝色的汽车。 “所有”就像所有标准一样。
此类事情的任何链接或提示都会有所帮助
谢谢
希望这可以帮助您了解我想要做的事情。
获得数据库哪里有关于汽车的数据。颜色列哪里是汽车颜色。键入coupe,suv,sedan的列。燃料柱在哪里是汽油,柴油,打火石。
用于显示我在html中创建的数据,其中包含3个下拉列表和提交按钮
现在我选择
1.color-蓝色。 2.type-全部。 3.fuel- all。
显示所有蓝色的汽车,如果它们是suv,轿跑车,柴油等无关紧要......(打火石只是例子)但是当我选择
时1.color-蓝色 2.type- coupe 3.fuel- all
并提交
然后将显示所有蓝色的燃料类型轿跑车。
我知道如何显示所有数据。 我知道如何显示满足所有标准的数据(使用AND)。喜欢
现在将显示所有使用柴油的蓝色轿跑车。 但有时我不知道我是否想要看到使用柴油或汽油的蓝色轿跑车。所以,如果我不知道我把它留下“全部”
也许它解释了一些东西,但是。
答案 0 :(得分:2)
And的组合将会做。
WHERE color = '$color' AND (car ='$car' OR '$car' = 'all')
注意:据我所知,MySQL没有任何短路,所以如果我们倾向于AND或组合,我们应该检查性能。另一种选择是使用IF,但标准的排列值不同,有时会使其无法使用。
另一种方法是创建动态查询并仅包含所需的那些过滤器。
答案 1 :(得分:2)
此代码将根据已知值添加“WHERE”条件。对于这个特定问题,它可能不是最快的解决方案,但它很容易扩展。
**更新为Matt建议的“内爆”方法。 H **
$sql = "SELECT * FROM test";
$conds = array();
if($car) {
$conds[] = "car = '$car'";
}
if($color) {
$conds[] = "color = '$color'";
}
// More conditions can be added if needed
// Creating a WHERE string by imploding:
if(count($conds) > 0) {
$where = implode(" AND ",$conds);
$sql .= " WHERE ".$where;
}
mysql_query($sql);
如果您没有任何条件,则只需“SELECT * FROM test”。