我有 5 个变量,可以是 true 或 false,并且我必须为每个不同的可能结果生成不同的 sql SELECT 语句。现在我有大量的 if else 语句,但我想知道是否有更聪明的方法来做到这一点?
例如,我有
if (x=true AND y=false AND z=false AND a=false AND b =false) {
$sql= "SELECT...."
} else if(x=true AND y=true AND z=false AND a=false AND b=false) {
$sql= "SELECT...."
}
第一个选择语句是如果用户输入文本并且没有选择其他任何内容:
$sql="SELECT CompanyName, Keywords, Product, Industry, Link, region, hot FROM searchtest_tbl WHERE Keywords LIKE '%$formSearch%' OR CompanyName LIKE '%$formSearch%' OR Product LIKE '%$formSearch%' OR Industry LIKE '%$formSearch%' ORDER BY hot DESC, CompanyName";
此声明适用于他们仅从“行业”下拉列表中选择的情况:
$sql="SELECT CompanyName, Product, Industry, Link, hot, region FROM searchtest_tbl WHERE Industry='$formIndustry' ORDER BY hot DESC, CompanyName";
如果他们输入文本,选择一个行业,但没有选择其他任何内容,则如下:
$sql="SELECT CompanyName, Product, Industry, Link, hot, region FROM searchtest_tbl WHERE Industry='$formIndustry' AND (Keywords LIKE '%$formSearch%' OR CompanyName LIKE '%$formSearch%' OR Product LIKE '%$formSearch%') ORDER BY hot DESC, CompanyName";
其余的基本上都是这样,但是如果选择了其他字段,则会显示 WHERE Product='$formProduct' AND
.... 等
最佳答案
也许您可以将逻辑分解为更小的组件。例如,如果 x=true
对应于 select 语句的特定部分,而 y=false
对应于不同部分,则逐段构建 select 语句:
$sql_statement = "SELECT ";
$sql_statement .= ($x) ? "`column_a` " : "`column_a`, `column_b` ";
$sql_statement .= "FROM ";
$sql_statement .= ($y) ? "`table_a` " : "`table_b` ";
如果这种方法不适合您,您可以发布额外的代码以便我们做出更好的判断吗?
关于php - 尝试使用 PHP 创建动态生成的 mySQL select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332601/