2014-12-02 4 views
0

codeigniter을 사용하여 sql 쿼리를 실행하려고했으나 쿼리에서 작은 따옴표로 인해 성공하지 못했습니다.SQL 쿼리에서 작은 따옴표를 제거하십시오.

function getStaffUser($uid, $participant_list=0) { 

$rid='1,2,3'; 
$where = "FIND_IN_SET(users.role_id, '".$rid."')"; 
$where_plist = "NOT FIND_IN_SET(users.uid, '".$participant_list."')"; 

$this->db->select("users.uid, CONCAT(`users`.`given_name`, ' ',`users`.`surname`) as 'user_name'", false); 
$this->db->from('users'); 
$this->db->where($where); 
$this->db->where("users.uid!=", $uid, false); 
if($participant_list!=0){ 

$this->db->where($where_plist, false);  
} 
$data = $this->db->get(); 

pr($this->db->last_query()); exit; 
if ($data->num_rows() == 0) 
    return false; 
else 
    return $data->result(); 

}

그것은 다음 쿼리를 반환합니다 :

SELECT users.uid, CONCAT(`users`.`given_name`, ' ', `users`.`surname`) as 'user_name' FROM (`users`) WHERE FIND_IN_SET(users.role_id, '1,2,3') AND users.uid!=1 AND `NOT` FIND_IN_SET(users.uid, '1,18,60') 

그러나, 쿼리가 마지막에 'NOT'에 작은 따옴표를 제외한 모든 괜찮 다음은 내 쿼리입니다. 해당 작은 따옴표를 제거하고 sqlyog에서 실행하면 잘 작동합니다.

따라서이를 제거하는 가장 좋은 방법은 무엇입니까? 나는 false을 사용하려고했지만 어느 쪽도 작동하지 않았습니다.

도움 말?

감사합니다.

+0

을 downvoted :

$where_plist = "! FIND_IN_SET(users.uid, '".$participant_list."')"; 

NOT! 별명인가? : S 나는 그 질문에 잘못된 것을 볼 수 없습니다. 나는 해결책을 찾으려고 노력했지만 성공하지 못했고, 결국 나는 여기서 도움을 얻을 수있게했다. 질문에 잘못된 것이 있으면 의견을 보내 주시면 감사하겠습니다. THANKS –

+0

** $ this-> db-> where ($ where_plist, false, false); 대신 ** $ this-> db-> (** $ where_plist, NULL, FALSE); ' –

답변

1

당신은 단순히 같이, !을 사용할 수 있어야합니다 : http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html#operator_not

+0

여전히 결과에는 작은 따옴표가 포함됩니다. 이것처럼 '!' 이것은 sql이 이것을 연산자가 아닌 것으로 식별하지 못하게합니다. –

+1

흠, PHP에서는 FIND_IN_SET 일을하고 쿼리에는 사용하지 않는 것이 어떻습니까? 나는 그것이 직접적인 해결책이 아니라는 것을 안다. 그러나 그것을 고려해야한다. CI 레코드에서 액티브 레코드를 사용하지 않아야하는 많은 경우를 기억합니다 ... – Shomz

+1

유일한 해결책 인 것 같습니다. 어쨌든 고마워. –

관련 문제