我正在编写一个PHP脚本,通过连接字符串并WHERE根据需要向子句添加条件来构建SQL查询.
是否更好的做法是使用WHERE 1=1以便第一个条件得到满足并且脚本可以只连接AND x = 'y'到查询,或者我应该编写额外的代码来检查是否添加了一个子句,如果没有,添加AND?
第一个解决方案允许在脚本中使用更干净的代码,但对我来说似乎不对.
令人困惑的问题,我知道.如果我需要更清楚,请告诉我.
抢
在确定需要的条件时创建条件数组.当你准备构建查询时,检查数组是否为空...如果它不为空,则打印"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)