데이터베이스 작업에서는 다른 테이블에서 검색된 데이터를 기반으로 조건부 선택을 수행해야 하는 경우가 많습니다. MySQL의 NOT IN 하위 쿼리는 하위 쿼리에 행이 없음을 기반으로 기본 쿼리에서 행을 제외하는 방법을 제공합니다.
CodeIgniter 구현
질문:
<사전>SELECT *
FROM certs
WHERE id NOT IN (SELECT id_cer FROM revokace);
CodeIgniter의 쿼리 빌더 방법을 사용하면 다음 접근 방식을 사용할 수 있습니다.
$this->db->select('*') ->from('certs') ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);
where() 메소드를 사용하면 쿼리에 통합할 문자열을 직접 전달할 수 있어 CodeIgniter의 이스케이프 메커니즘. 그러나 SQL 삽입 공격을 방지하기 위해 사용자 제공 입력과 함께 이 접근 방식을 사용할 때는 주의하는 것이 좋습니다.
최적화된 하위 쿼리 라이브러리
또는 특수 하위 쿼리 활용을 고려하세요. 코드 가독성을 높이고 복잡한 쿼리를 단순화할 수 있는 라이브러리입니다. 주어진 예는 다음과 같이 해석됩니다.
$this->db->select('*') ->from('certs') ->where('id', $this->subquery->subquery('where_in', function ($subq) { $subq->select('id_cer') ->from('revokace'); }, 'id', FALSE));
이 라이브러리는 하위 쿼리 구성을 단순화하고 보다 유연하고 표현력이 풍부한 SQL 문을 가능하게 합니다. 직접 문자열 접근 방식을 선택하든 라이브러리를 활용하든 이러한 방법을 사용하면 CodeIgniter에서 NOT IN 하위 쿼리를 효과적으로 구현할 수 있습니다.
위 내용은 CodeIgniter의 쿼리 빌더에서 NOT IN 하위 쿼리를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!