2

我正在考虑实现一个函数来“构建” WHERESQL 请求中的子句,如下所示:

"SELECT * FROM table $where"

使用如下所示的循环构建$where

$arr=array("Id"=>"1","Time"=>"12:00");
function whereBuild($arr){
    foreach ($arr as $key => $val){
      $result.=$key.'="'.$val.'" AND ';
    }
    $result = substr($result, 0, -5); // removes last AND and spaces
    return $result
}
$where = whereBuild($arr);

你怎么看?这有什么意义吗?能否以更简单/更好的方式实现?

谢谢!

4

1 回答 1

5

如果您总是AND在查询中使用,您可以构建一个数组并在返回时将其内爆。

$arr = array("Id"=>"1","Time"=>"12:00");
function whereBuild($arr){
    $result = array();
    foreach ($arr as $key => $val){
      $result[] = $key.'="'.$val.'"';
    }
    return implode(" AND ", $result);
}
$where = whereBuild($arr);
于 2013-01-24T12:45:41.203 回答