SQL 使用数组中的多个动态条件查询 select
SQL query select with multiple dynamic conditions from array
我想使用预先存储在数组中的条件执行 SELECT 查询。
然而,这个数组将根据传递的属性数量动态填充。
属性将存储在 MySQL 数据库中,如下所示:
| car_id | brand | fwd | ac | abs | gasoline | diesel |
--------------------------------------------------------
| 000001 | VW | 0 | 1 | 1 | 0 | 1 |
然后变量将通过表单select编辑。
wd = isset( $_POST['fwd'] );
$diesel = isset( $_POST['diesel'] );
$gasoline = isset( $_POST['gasoline'] );
$ac = isset( $_POST['ac'] );
$abs = isset( $_POST['abs'] );
$features = array();
if (wd == true) {
array_push($features, "fwd");
}
if ($diesel == true) {
array_push($featuresn, "diesel");
}
if ($gasoline == true) {
array_push($features, "gasoline");
}
if ($ac == true) {
array_push($features, "ac");
}
if ($abs == true) {
array_push($features, "abs");
}
这里是我找不到问题答案的地方;
"static" select 查询将不起作用,因为此时数组 $properties 可以具有不同数量和类型的值:
$features ([0] => fwd [1] => abs [2] => ac)
$features ([0] => fwd [1] => abs [2] => ac [3] => diesel)
$features ([0] => abs [1] => ac [2] => gasoline)
无法弄清楚实际的语法,所以这里是我想要的外行术语:
SELECT car_id FROM car_list WHERE [firstarrayvalue==1] AND [secondarrayvalue==1] AND [thirdarrayvalue==1]
直到数组的所有值都被用作条件。
我建议准备一个数组中的所有 where 子句并将它们内爆到查询中。
foreach($features as $f) {
$sqlfeatures[] = "$f = 1";
}
$sql = "SELECT car_id FROM car_list WHERE ".implode(' AND ', $sqlfeatures);
或者简单的一行
"SELECT car_id FROM car_list WHERE ".implode(' = 1 AND ', $features)." = 1";
我想使用预先存储在数组中的条件执行 SELECT 查询。
然而,这个数组将根据传递的属性数量动态填充。
属性将存储在 MySQL 数据库中,如下所示:
| car_id | brand | fwd | ac | abs | gasoline | diesel |
--------------------------------------------------------
| 000001 | VW | 0 | 1 | 1 | 0 | 1 |
然后变量将通过表单select编辑。
wd = isset( $_POST['fwd'] );
$diesel = isset( $_POST['diesel'] );
$gasoline = isset( $_POST['gasoline'] );
$ac = isset( $_POST['ac'] );
$abs = isset( $_POST['abs'] );
$features = array();
if (wd == true) {
array_push($features, "fwd");
}
if ($diesel == true) {
array_push($featuresn, "diesel");
}
if ($gasoline == true) {
array_push($features, "gasoline");
}
if ($ac == true) {
array_push($features, "ac");
}
if ($abs == true) {
array_push($features, "abs");
}
这里是我找不到问题答案的地方;
"static" select 查询将不起作用,因为此时数组 $properties 可以具有不同数量和类型的值:
$features ([0] => fwd [1] => abs [2] => ac)
$features ([0] => fwd [1] => abs [2] => ac [3] => diesel)
$features ([0] => abs [1] => ac [2] => gasoline)
无法弄清楚实际的语法,所以这里是我想要的外行术语:
SELECT car_id FROM car_list WHERE [firstarrayvalue==1] AND [secondarrayvalue==1] AND [thirdarrayvalue==1]
直到数组的所有值都被用作条件。
我建议准备一个数组中的所有 where 子句并将它们内爆到查询中。
foreach($features as $f) {
$sqlfeatures[] = "$f = 1";
}
$sql = "SELECT car_id FROM car_list WHERE ".implode(' AND ', $sqlfeatures);
或者简单的一行
"SELECT car_id FROM car_list WHERE ".implode(' = 1 AND ', $features)." = 1";