0
CMS에 검색 기능이있어 사용자 입력이 두 개 이상 허용되고 페이지의 제목과 내용이 검색됩니다.Yii 쿼리 작성기 : for 루프 큐에 다중 bindValue가 실패합니까?
먼저 SQL을 연결 문자열로 만든 다음 createCommand()로 전달합니다.
그러나 나는 쿼리 빌더 스타일로의 확인에 실패, 그것은 메시지와 함께 실패했다 :
Invalid parameter number: number of bound variables does not match number of tokens.
내가 잘못 위치를 확인할 도움말을 확인하시기 바랍니다.
이
는 (SQL 문자열을 전달) 작업 코드 :
$sql = 'SELECT * ';
$sql .= 'FROM page';
$sql .= 'WHERE (';
$i = 1;
foreach ($keywords as $keyword) {
$sql .= 'title LIKE :keyword_'.$i;
$sql .= ' || ';
$sql .= 'content LIKE :keyword_'.$i;
if($i != count($keywords)){
$sql .= ' || ';
$i ++;
}
}
$sql .= ');';
$command = Yii::app()->db->createCommand($sql);
$i = 1;
foreach ($keywords as $keyword) {
$command->bindValue(':keyword_'.$i, "%$keyword%", PDO::PARAM_STR);
$i ++;
}
$result = $command->queryAll();
return $result;
이있는 실패 코드 (쿼리 빌더) :
$command = Yii::app()->db->createCommand()
->select('*')
->from('page');
$i = 1;
foreach ($keywords as $keyword) {
$command
-> orWhere('title LIKE :keyword_'.$i)
-> orWhere('content LIKE :keyword_'.$i)
->bindValue(':keyword_'.$i, "%$keyword%", PDO::PARAM_STR);
$i ++;
}
$result = $command->queryAll();
return $result;