我有这样的代码和用户以可检查形式选择的变量
SELECT
FROM
WHERE
product = 'Super Model'
AND Model = 'Model1'
OR Model = 'Model2'
OR Model = 'Model3'
OR Model = 'Model4'
GROUP BY
检查列表如下所示:
选择型号:
- 型号1
- 模型2
- 模型3
- 型号4
我想让这个查询动态化。我会为此做一个 switch case 语句。
switch ($model) {
case "Model1":
$models = " AND Model = 'Model1' ";
break;
case "Model2":
$models = " OR Model = 'Model2' ";
break;
case "Model3":
$models = " OR Model = 'Model3' ";
break;
case "Model4":
$models = " OR Model = 'Model4' ";
break;
}
但是有问题: 1. 它只对一个变量有效 2. 如果用户选择 ie model2 和 model3 字符串将以 OR 语句开头,这不符合逻辑,因为它假设以 AND 开头。
我尝试过这样的事情:
$models = " AND '.$model[0].' OR '.$model[1].' OR '.$model[2].' OR '.$model[3].' OR '.$model[4].' ";
然后我将 $models 放在 WHERE 语句中,但它不起作用。而且我注意到了问题: 1. 如果用户只选择 2 个模型,则语句可能看起来像:“AND Model2 OR Model3 OR OR OR” 2. 它不是动态的,我想有类似的东西:“对于每个项目在数组中做某事”。
所以也许是foreach?但是如何处理开头的这个AND和其他模型之间的OR呢?
任何帮助表示赞赏。