总的来说,我对 php 和编码相当陌生。
我有一系列条件需要测试它们是否已设置。
它们是 $option1、$option2、$option3
if (isset($option1)){
if (isset($option2)){
if (isset($option3)){
$query = "SELECT *
FROM Group
WHERE FirstOption = '$option1' AND SecondOption = '$option2' AND ThirdOption = '$option3'";
}
else {
$query = "SELECT *
FROM Group
WHERE FirstOption = '$option1' AND SecondOption = '$option2";
}
}
else {
$query = "SELECT *
FROM Group
WHERE FirstOption = '$option1' AND ThirdOption = '$option3";
}
}
else {
// .. snip, much more duplicated code ..
}
所以这里的问题是我需要根据是否设置条件对 mysql 进行独特的查询。但它们彼此之间有很多联系,而且我实际上有 7 个选择,所以分支绝对是巨大的!我在三点钟的时候停了下来,因为我几乎把自己弄糊涂了。
必须有一种更好的方式来写这个 - 有人可以帮助我更好地理解吗?
无需动态 SQL 构建。只需使用逻辑即可。
SELECT *
FROM Group
WHERE (FirstOption = '$option1' or '$option1' = '')
AND (SecondOption = '$option2' or '$option2' = '')
AND (ThirdOption = '$option3' or '$option3' = '')
理想情况下,您可以使用占位符和准备好的语句,但以上内容对于指导目的来说是最清楚的。
如果有人好奇的话——这没有显着的查询开销。任何现代数据库引擎都会优化'$option1' = ''
表达式转换为常量值,仅将其计算为布尔值一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)