【发布时间】:2012-09-30 15:04:40
【问题描述】:
我想有条件地构建一条 SQL 语句,但遇到了问题。在这种情况下,可能有也可能没有 WHERE 子句。
$sql=null;
$arr='';
if( $id != 'all' ){
$sql = ' WHERE type = :type AND id=:id';
$arr = array(':type'=>$type,':id'=>$id);
}
$stmt = $dbh->prepare("SELECT * FROM table $sql");
$stmt->execute($arr);
...
如果id等于'all',那么我只想重写没有WHERE子句的sql。 由于我必须通过 $arr 才能执行,所以当 id = 'all' 时出现以下错误,因为 execute 需要一个值: PHP 警告:PDOStatement::execute() 期望参数 1 是数组,给定字符串
我尝试传递执行一个空数组,但也出现错误。 如何在不必重写两个完整的 sql 块的情况下做到这一点,每个块都有自己的执行 statememt?
【问题讨论】: