使用WHERE 1 = 1 AND构建SQL查询是不好的做法

Rob*_*Rob 10 php sql where

我正在编写一个PHP脚本,通过连接字符串并WHERE根据需要向子句添加条件来构建SQL查询.

是否更好的做法是使用WHERE 1=1以便第一个条件得到满足并且脚本可以只连接AND x = 'y'到查询,或者我应该编写额外的代码来检查是否添加了一个子句,如果没有,添加AND

第一个解决方案允许在脚本中使用更干净的代码,但对我来说似乎不对.

令人困惑的问题,我知道.如果我需要更清楚,请告诉我.

KM.*_*KM. 10

不,SQL优化器只会抛弃它1=1并继续前进.


Ty *_*y W 7

在确定需要的条件时创建条件数组.当你准备构建查询时,检查数组是否为空...如果它不为空,则打印"WHERE",然后用"AND"连接在一起的元素.

编辑

既然你正在使用PHP,我将给出一些示例代码:

<?php
    $conditions = array();
    if($foo == "bar") {
        $conditions[] = "some_table.foo = 'bar'";
    }
    if($show_future) {
        $conditions[] = "some_table.entry_date > NOW()";
    }
    $sql_where = count($conditions) ? "WHERE " . implode(" AND ", $conditions) : "";
    $sql = "SELECT * FROM some_table $sql_where;";
?>
Run Code Online (Sandbox Code Playgroud)