2014-04-18 3 views
0

는 내 모델에서 간단한 쿼리를 구현 :CodeIgniter의 쿼리 데이터베이스 오류

$condition = "id='$user_id' AND (role='admin' OR role='manager' OR role='staff')" ; 
$this->db->select("password,ref_id,role"); 
$this->db->from("user"); 
$this->db->where($condition); 
$query = $this->db->get(); 
return $query->row_array(); 

그러나, 다음과 같은 오류가 발생

Error Number: 1054 

Unknown column 'id='1'' in 'where clause' 

SELECT `password`, `ref_id`, `role` FROM (`user`) WHERE `id='1'` AND (role='customer' OR role='supplier') 

Filename: D:\MYSERVER\wamp\www\system\database\DB_driver.php 

Line Number: 330 

그래서 무슨 일입니까? 코드의 경우

답변

0

당신이 하나의 시도 할 수 있습니다 : 위의 구문에서

$this->db->where($condition, NULL, false); 

, 첫 번째가 condition입니다, 두 번째 매개 변수는 여기 NULLvalue위한 것이며, 세 번째는 문자열을 이스케이프 처리합니다 (기본값은 true 임).

+0

두 번째 및 세 번째 매개 변수의 의미를 설명해 주시겠습니까? – user3453318

+0

첫 번째 매개 변수는 이름이고 두 번째 매개 변수는 값이며 세 번째 매개 변수는 이스케이프 문자열입니다 (기본값은 참입니다). –

+0

'id = '1'' CI가 문자열을 벗어나려고하는 방법을 봅니다. 왜이 오류가 발생하는지입니다. –

0
$this->db->select("password,ref_id,role"); 
$this->db->from("user"); 
$this->db->where('id', $user_id); 
$this->db->where('role', 'manager'); 
$this->db->where_or('role', 'staff'); 

또는는 경우가 작동하지 않습니다. where에 sql 문을 추가하는 경우 다른 매개 변수도 전달해야합니다. 아래 시도 -

$this->db->where($condition, NULL, FALSE);