回答

收藏

在不混淆嵌套条件的情况下使用 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' = 表达式优化为常数值,仅评估为布尔值一次。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则