2012-09-30 2 views
0

조건부로 SQL 문을 작성하고 문제가 있습니다. 이 경우 WHERE 절이있을 수도 있고 없을 수도 있습니다.조건부 SQL에서 PDO 실행 오류

$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'이면 folowing 오류가 발생합니다. PHP 경고 : PDOStatement :: execute()는 매개 변수 1이 배열이 될 것으로 예상하고 문자열이 주어진 경우

빈 배열을 전달하여 전달했지만 오류가 발생했습니다. 각각의 고유 한 실행 구문을 가진 두 개의 완전한 블록을 다시 작성하지 않고이 작업을 수행하려면 어떻게해야합니까?

답변

0

if 섹션으로 prepare 문을 이동하고 두 번째 경우에 두 번째 prepare 문을 추가해야하는 것처럼 보입니다. id === 'all'에 대해 else을 추가 한 경우 가독성을 위해 아마 더 좋을 것입니다.

+0

감사합니다. 그게 내가 현재 갖고있는 방법이지만, 사람을 처리하는 더 좋은 방법이있는 것처럼 보입니다. 당신은 맞을지도 모릅니다. – NaN

+0

당신이 옳았다 고 생각합니다. :) 나는 대답을 당신에게 부여했습니다. 고맙습니다. – NaN