除了这一大段代码之外,试图找出一种更简单的方法来动态创建此 SQL 语句
在表单上,我有复选框engine1-engine6,有人可以选择全部或不选择其中任何一个(当前不选择=实际上与选择全部相同,这就是我想要的方式)
下面的代码可以正常工作并正确生成 SQL 语句,只是想知道是否有更好的方法来做到这一点?
第一部分代码确定第一个复选框是什么,第二组代码根据检查状态添加其余复选框,并在语句中包含所需的“OR”。
$SQLselect = "SELECT * FROM enginedataview ";
if (!empty($_POST["engine1"])){
$SQLselect = $SQLselect ."WHERE engine_id = 1";
$starteng=1;
}
elseif (!empty($_POST["engine2"])){
$SQLselect = $SQLselect ."WHERE engine_id = 2";
$starteng=2;
}
elseif (!empty($_POST["engine3"])){
$SQLselect = $SQLselect ."WHERE engine_id = 3";
$starteng=3;
}
elseif (!empty($_POST["engine4"])){
$SQLselect = $SQLselect ."WHERE engine_id = 4";
$starteng=4;
}
elseif (!empty($_POST["engine5"])){
$SQLselect = $SQLselect ."WHERE engine_id = 5";
$starteng=5;
}
elseif (!empty($_POST["engine6"])){
$SQLselect = $SQLselect ."WHERE engine_id = 6";
$starteng=6;
}
switch($starteng){
case "1":
if (!empty($_POST["engine2"])){$SQLselect = $SQLselect ." OR engine_id = 2";}
if (!empty($_POST["engine3"])){$SQLselect = $SQLselect ." OR engine_id = 3";}
if (!empty($_POST["engine4"])){$SQLselect = $SQLselect ." OR engine_id = 4";}
if (!empty($_POST["engine5"])){$SQLselect = $SQLselect ." OR engine_id = 5";}
if (!empty($_POST["engine6"])){$SQLselect = $SQLselect ." OR engine_id = 6";}
break;
case "2":
if (!empty($_POST["engine3"])){$SQLselect = $SQLselect ." OR engine_id = 3";}
if (!empty($_POST["engine4"])){$SQLselect = $SQLselect ." OR engine_id = 4";}
if (!empty($_POST["engine5"])){$SQLselect = $SQLselect ." OR engine_id = 5";}
if (!empty($_POST["engine6"])){$SQLselect = $SQLselect ." OR engine_id = 6";}
break;
case "3":
if (!empty($_POST["engine4"])){$SQLselect = $SQLselect ." OR engine_id = 4";}
if (!empty($_POST["engine5"])){$SQLselect = $SQLselect ." OR engine_id = 5";}
if (!empty($_POST["engine6"])){$SQLselect = $SQLselect ." OR engine_id = 6";}
break;
case "4":
if (!empty($_POST["engine5"])){$SQLselect = $SQLselect ." OR engine_id = 5";}
if (!empty($_POST["engine6"])){$SQLselect = $SQLselect ." OR engine_id = 6";}
break;
Case "5":
if (!empty($_POST["engine6"])){$SQLselect = $SQLselect ." OR engine_id = 6";}
break;
}
最佳答案
你能试试这个吗?
<?php
$ids = array();
for ($i = 1 ; $i < 7 ; $i++) {
if ($_POST['engine' . $i] == $i) {
$ids[] = $i;
}
}
$SQLselect = "SELECT * FROM enginedataview WHERE engine_id IN(" . implode(', ', $ids) . ")";
关于php - 根据表单输入更改 SQL "Where"子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43459576/