在不混淆嵌套条件的情况下使用 ND表达式构建动态SQL?
技术问答
264 人阅读
|
0 人回复
|
2023-09-14
|
我对php和编码一般比较陌生。
( u6 }7 a; n3 H1 |5 h" _% V! P我有一系列的条件要测试是否已经设置了。他们是吗?$ option1,$ option2,$ option3
% `/ {8 E J6 w7 L7 wif (isset($option1){ if (isset($option2)()()()()()())()())())()())()()))()()))())()())())())())())()))()))()))()))())()))()))()))()))()))()))())()))())()))())())())()))())())())())))()))())()))())()))()())()))())()))()()))()))()()()))())()))())())())())()())()())()())))()())))())())())()))())())()))()))())())())())())()()()()()))))()))))))()()()())))))())))()()()()()()()()))()))))()))))())))))()()()()()()()()()()()()()()()()())()())))))))())))))())()()()()))))()())()()()()()()()()()()()))))())))))()()()()()()()()())))))))))))))))))))))))()()()()()())())()()()()())))())()()()))))))))))()()())())()()()()()()))))())))))()()()()()()()if (isset($option3)(3)(3)(3))(3))(3)))( )$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唯一的查询。但是他们之间有很多联系。其实我有七种选择,所以分支绝对庞大。!我几乎迷惑了自己,三点钟就停了下来。 }* ]( c' @8 b. _1 ?' k' V) C' m
必须有一种非常好的写作方法-有人能帮我更好地理解吗?5 I( m) I4 M8 w, Y# n: f: ?
+ T i! Z0 q, O% e Q$ ^! } 解决方案: / B. e" X9 n2 |1 ^; d) M; F
无需动态SQL构建。只需使用逻辑。
- b; q8 E6 {) S6 u! E& D2 V" bSELECT * FROM Group WHERE (FirstOption = '$option1' or '$option1' = AND (SecondOption = '$option2' or '$option2' = AND (ThirdOption = '$option3' or '$option3' = '')理想情况下,你会使用占位符和准备好的句子,但以上内容是指导目的最明确的。
$ c1 A$ I( B! P+ ], P万一有好奇的人-没有太多的查询费用。任何现代数据库引擎都会使用$option1' = 表达式优化为常数值,仅评估为布尔值一次。 |
|
|
|
|
|