2011-08-31 2 views
0

검색 값 중 하나에 괄호가 포함 된 SQL 쿼리를 만들 때 예상 한 결과를 얻지 못합니다. 그러나 데이터베이스에서 직접 쿼리를 실행하면 예상 한 결과가 반환됩니다.괄호가있는 경우 CodeIgniter가 SQL 쿼리의 결과를 반환하지 않는 이유는 무엇입니까?

또한 검색 결과에 괄호가 없으면 예상 결과가 올바르게 반환됩니다.

CodeIgniter의 모델 기능 :

function get_submodels($params) 
{ 
$sql = "SELECT DISTINCT(`a`.`submodel`), `a`.`model_id` FROM `models` AS `a`" 
. "LEFT JOIN `manufacturers` AS `b` ON `a`.`manufacturer` = `b`.`manufacturer_id`" 
. "WHERE `a`.`year` = ? AND `b`.`manufacturer` = ? AND `a`.`model` = ?" 
. "ORDER BY `a`.`submodel` ASC;"; 

$query = $this->db->query($sql, $params); 

return $query->result(); 
} 

작업 쿼리의 예 :

"... WHERE `a`.`year` = '2007' AND `b`.`manufacturer` = 'CHEVROLET' AND `a`.`model` = 'MONTE CARLO'" 

비 작업 쿼리의 예 :

"... WHERE `a`.`year` = '2007' AND `b`.`manufacturer` = 'MERCEDES BENZ' AND `a`.`model` = 'CLK350 (W209)'" 

내가 사용하고 $이 -> db-> last_query()이고 쿼리의 형식이 올바로 지정되어 있어야합니다. 결과가없는 마지막 쿼리를 복사하여 데이터베이스에 대해 직접 실행하면 결과가 예상대로 표시됩니다.

+4

그들은 문제가 아니지만 '\ n'을 사용해야하는 이유는 무엇입니까? –

+2

실제 오류 출력은 무엇입니까? – J0HN

+0

@Pekka 새로운 라인은 필요 없지만 phpMyAdmin이 쿼리 실행에서 php 문자열을 자동으로 생성하는 방법입니다. – Dan

답변

1

$ this-> db-> last_query()를 실행하고 쿼리가 적절하다고 판단 했음에도 불구하고 페이지에서 프로파일 링을 사용하기로 결정했습니다. 내 결과는 괄호가 HTML 엔티티로 인코딩되는 것을 보여줍니다.

따라서 쿼리는이 형성되고 있던 대신이의

"... WHERE `a`.`year` = '2007' AND `b`.`manufacturer` = 'MERCEDES BENZ' AND `a`.`model` = 'CLK350 (W209)'" 

을 :

"... WHERE `a`.`year` = '2007' AND `b`.`manufacturer` = 'MERCEDES BENZ' AND `a`.`model` = 'CLK350 (W209)'" 

나는이 열의를 htmlentities를 사용하여 삽입 쿼리를 수정하여이 문제를 해결하고 업데이트

기존의 모든 기록. Codeigniter가 값을 벗어날 것이라는 것을 알았지 만 코드를 인코딩 할 수 있다는 것을 알지 못했습니다.

+0

+1 좋은 정보와 답변을 올리기 위해 다시 방문하십시오. 건배! – marramgrass

+0

언제든지 정보를 제공 할 수있어서 기쁩니다. 나는 여기에 해결책을 찾는 것과 같은 행운을 보냈다. 나는 나 자신을 알아 냈다. – Dan

관련 문제