Query Builder 클래스

CodeIgniter는 Query Builder 클래스에 대한 접근을 제공합니다. 이 패턴을 사용하면 최소한의 스크립팅으로 데이터베이스에서 정보를 검색, 삽입, 업데이트할 수 있습니다. 경우에 따라 데이터베이스 작업을 수행하는 데 한두 줄의 코드만 필요합니다. CodeIgniter는 각 데이터베이스 테이블이 자체 클래스 파일일 필요가 없습니다. 대신 더 단순화된 인터페이스를 제공합니다.

단순성 외에도 Query Builder 기능을 사용하는 주요 이점은 쿼리 구문이 각 데이터베이스 어댑터에 의해 생성되므로 데이터베이스 독립적인 애플리케이션을 만들 수 있다는 것입니다. 또한 값이 시스템에 의해 자동으로 이스케이프되므로 더 안전한 쿼리를 만들 수 있습니다.

참고

직접 쿼리를 작성하려는 경우 database config 파일에서 이 클래스를 비활성화하여 코어 데이터베이스 라이브러리와 어댑터가 더 적은 리소스를 사용하도록 할 수 있습니다.

데이터 조회

다음 함수를 사용하여 SQL SELECT 문을 작성할 수 있습니다.

$this->db->get()

선택 쿼리를 실행하고 결과를 반환합니다. 단독으로 사용하여 테이블의 모든 레코드를 검색할 수 있습니다:

$query = $this->db->get('mytable');  // 결과: SELECT * FROM mytable

두 번째 및 세 번째 매개변수를 사용하여 limit 및 offset 절을 설정할 수 있습니다:

$query = $this->db->get('mytable', 10, 20);

// 실행: SELECT * FROM mytable LIMIT 20, 10
// (MySQL에서. 다른 데이터베이스는 구문이 약간 다릅니다)

위의 함수가 $query 변수에 할당되어 있으며, 이를 사용하여 결과를 표시할 수 있습니다:

$query = $this->db->get('mytable');

foreach ($query->result() as $row)
{
        echo $row->title;
}

결과 생성에 관한 자세한 내용은 result 함수 페이지를 참조하세요.

$this->db->get_compiled_select()

$this->db->get() 처럼 선택 쿼리를 컴파일하지만 쿼리를 실행하지 않습니다. 이 메소드는 SQL 쿼리를 문자열로 반환합니다.

예시:

$sql = $this->db->get_compiled_select('mytable');
echo $sql;

// 문자열 출력: SELECT * FROM mytable

두 번째 매개변수를 사용하여 Query Builder 쿼리가 초기화될지 여부를 설정할 수 있습니다 (기본적으로 $this->db->get() 사용 시와 마찬가지로 초기화됩니다):

echo $this->db->limit(10,20)->get_compiled_select('mytable', FALSE);

// 문자열 출력: SELECT * FROM mytable LIMIT 20, 10
// (MySQL에서. 다른 데이터베이스는 구문이 약간 다릅니다)

echo $this->db->select('title, content, date')->get_compiled_select();

// 문자열 출력: SELECT title, content, date FROM mytable LIMIT 20, 10

위 예시에서 주목할 점은 두 번째 쿼리가 $this->db->from() 을 사용하지 않았고 첫 번째 매개변수에 테이블 이름을 전달하지 않았다는 것입니다. 이 결과는 쿼리가 값을 초기화하는 $this->db->get() 또는 $this->db->reset_query() 를 사용하여 직접 실행되지 않았기 때문입니다.

$this->db->get_where()

위 함수와 동일하지만 db->where() 함수를 사용하는 대신 두 번째 매개변수에 “where” 절을 추가할 수 있습니다:

$query = $this->db->get_where('mytable', array('id' => $id), $limit, $offset);

where 함수에 대한 자세한 내용은 아래를 참조하세요.

참고

get_where()는 이전에 getwhere()로 알려져 있었으며, 이는 제거되었습니다.

$this->db->select()

쿼리의 SELECT 부분을 작성할 수 있습니다:

$this->db->select('title, content, date');
$query = $this->db->get('mytable');

// 실행: SELECT title, content, date FROM mytable

참고

테이블에서 전체(*)를 선택하는 경우 이 함수를 사용할 필요가 없습니다. 생략하면 CodeIgniter는 모든 필드를 선택하려는 것으로 가정하고 자동으로 ‘SELECT *’를 추가합니다.

$this->db->select() 는 선택적 두 번째 매개변수를 허용합니다. FALSE로 설정하면 CodeIgniter는 필드 또는 테이블 이름을 보호하려고 시도하지 않습니다. 이는 자동 이스케이핑이 필드를 손상시킬 수 있는 복합 select 문이 필요한 경우 유용합니다.

$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4) AS amount_paid', FALSE);
$query = $this->db->get('mytable');

$this->db->select_max()

쿼리에 SELECT MAX(field) 부분을 작성합니다. 결과 필드의 이름을 변경하기 위해 선택적으로 두 번째 매개변수를 포함할 수 있습니다.

$this->db->select_max('age');
$query = $this->db->get('members');  // 결과: SELECT MAX(age) as age FROM members

$this->db->select_max('age', 'member_age');
$query = $this->db->get('members'); // 결과: SELECT MAX(age) as member_age FROM members

$this->db->select_min()

쿼리에 “SELECT MIN(field)” 부분을 작성합니다. select_max()와 마찬가지로 결과 필드의 이름을 변경하기 위해 선택적으로 두 번째 매개변수를 포함할 수 있습니다.

$this->db->select_min('age');
$query = $this->db->get('members'); // 결과: SELECT MIN(age) as age FROM members

$this->db->select_avg()

쿼리에 “SELECT AVG(field)” 부분을 작성합니다. select_max()와 마찬가지로 결과 필드의 이름을 변경하기 위해 선택적으로 두 번째 매개변수를 포함할 수 있습니다.

$this->db->select_avg('age');
$query = $this->db->get('members'); // 결과: SELECT AVG(age) as age FROM members

$this->db->select_sum()

쿼리에 “SELECT SUM(field)” 부분을 작성합니다. select_max()와 마찬가지로 결과 필드의 이름을 변경하기 위해 선택적으로 두 번째 매개변수를 포함할 수 있습니다.

$this->db->select_sum('age');
$query = $this->db->get('members'); // 결과: SELECT SUM(age) as age FROM members

$this->db->from()

쿼리의 FROM 부분을 작성할 수 있습니다:

$this->db->select('title, content, date');
$this->db->from('mytable');
$query = $this->db->get();  // 결과: SELECT title, content, date FROM mytable

참고

앞서 보여준 것처럼 쿼리의 FROM 부분은 $this->db->get() 함수에서 지정할 수 있으므로 선호하는 방법을 사용하세요.

$this->db->join()

쿼리의 JOIN 부분을 작성할 수 있습니다:

$this->db->select('*');
$this->db->from('blogs');
$this->db->join('comments', 'comments.id = blogs.id');
$query = $this->db->get();

// 결과:
// SELECT * FROM blogs JOIN comments ON comments.id = blogs.id

하나의 쿼리에 여러 조인이 필요한 경우 여러 함수 호출을 사용할 수 있습니다.

특정 유형의 JOIN이 필요한 경우 함수의 세 번째 매개변수를 통해 지정할 수 있습니다. 옵션: left, right, outer, inner, left outer, right outer, full outer.

$this->db->join('comments', 'comments.id = blogs.id', 'left');
// 결과: LEFT JOIN comments ON comments.id = blogs.id

특정 데이터 검색

$this->db->where()

이 함수를 사용하면 네 가지 방법 중 하나를 사용하여 WHERE 절을 설정할 수 있습니다:

참고

이 함수에 전달된 모든 값은 자동으로 이스케이프되어 더 안전한 쿼리를 생성합니다.

  1. 단순 키/값 메소드:

    $this->db->where('name', $name); // 결과: WHERE name = 'Joe'
    

    등호 기호가 자동으로 추가됩니다.

    여러 함수 호출을 사용하면 AND로 연결됩니다:

    $this->db->where('name', $name);
    $this->db->where('title', $title);
    $this->db->where('status', $status);
    // WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
    
  2. 커스텀 키/값 메소드:

    비교를 제어하기 위해 첫 번째 매개변수에 연산자를 포함할 수 있습니다:

    $this->db->where('name !=', $name);
    $this->db->where('id <', $id); // 결과: WHERE name != 'Joe' AND id < 45
    
  3. 연관 배열 메소드:

    $array = array('name' => $name, 'title' => $title, 'status' => $status);
    $this->db->where($array);
    // 결과: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
    

    이 메소드에서도 자체 연산자를 포함할 수 있습니다:

    $array = array('name !=' => $name, 'id <' => $id, 'date >' => $date);
    $this->db->where($array);
    
  4. 커스텀 문자열:

    절을 수동으로 작성할 수 있습니다:

    $where = "name='Joe' AND status='boss' OR status='active'";
    $this->db->where($where);
    

$this->db->where() 는 선택적 세 번째 매개변수를 허용합니다. FALSE로 설정하면 CodeIgniter는 필드 또는 테이블 이름을 보호하려고 시도하지 않습니다.

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

$this->db->or_where()

위 함수와 동일하지만 여러 인스턴스가 OR로 연결됩니다:

$this->db->where('name !=', $name);
$this->db->or_where('id >', $id);  // 결과: WHERE name != 'Joe' OR id > 50

참고

or_where()는 이전에 orwhere()로 알려져 있었으며, 이는 제거되었습니다.

$this->db->where_in()

적절한 경우 AND로 연결된 WHERE field IN (‘item’, ‘item’) SQL 쿼리를 생성합니다:

$names = array('Frank', 'Todd', 'James');
$this->db->where_in('username', $names);
// 결과: WHERE username IN ('Frank', 'Todd', 'James')

$this->db->or_where_in()

적절한 경우 OR로 연결된 WHERE field IN (‘item’, ‘item’) SQL 쿼리를 생성합니다:

$names = array('Frank', 'Todd', 'James');
$this->db->or_where_in('username', $names);
// 결과: OR username IN ('Frank', 'Todd', 'James')

$this->db->where_not_in()

적절한 경우 AND로 연결된 WHERE field NOT IN (‘item’, ‘item’) SQL 쿼리를 생성합니다:

$names = array('Frank', 'Todd', 'James');
$this->db->where_not_in('username', $names);
// 결과: WHERE username NOT IN ('Frank', 'Todd', 'James')

$this->db->or_where_not_in()

적절한 경우 OR로 연결된 WHERE field NOT IN (‘item’, ‘item’) SQL 쿼리를 생성합니다:

$names = array('Frank', 'Todd', 'James');
$this->db->or_where_not_in('username', $names);
// 결과: OR username NOT IN ('Frank', 'Todd', 'James')

유사 데이터 검색

$this->db->like()

이 메소드를 사용하면 검색에 유용한 LIKE 절을 생성할 수 있습니다.

참고

이 메소드에 전달된 모든 값은 자동으로 이스케이프됩니다.

  1. 단순 키/값 메소드:

    $this->db->like('title', 'match');
    // 결과: WHERE `title` LIKE '%match%' ESCAPE '!'
    

    여러 메소드 호출을 사용하면 AND로 연결됩니다:

    $this->db->like('title', 'match');
    $this->db->like('body', 'match');
    // WHERE `title` LIKE '%match%' ESCAPE '!' AND  `body` LIKE '%match% ESCAPE '!'
    

    와일드카드(%)의 위치를 제어하려면 선택적 세 번째 인수를 사용할 수 있습니다. 옵션: ‘before’, ‘after’, ‘none’, ‘both’(기본값).

    $this->db->like('title', 'match', 'before');    // 결과: WHERE `title` LIKE '%match' ESCAPE '!'
    $this->db->like('title', 'match', 'after');     // 결과: WHERE `title` LIKE 'match%' ESCAPE '!'
    $this->db->like('title', 'match', 'none');      // 결과: WHERE `title` LIKE 'match' ESCAPE '!'
    $this->db->like('title', 'match', 'both');      // 결과: WHERE `title` LIKE '%match%' ESCAPE '!'
    
  2. 연관 배열 메소드:

    $array = array('title' => $match, 'page1' => $match, 'page2' => $match);
    $this->db->like($array);
    // WHERE `title` LIKE '%match%' ESCAPE '!' AND  `page1` LIKE '%match%' ESCAPE '!' AND  `page2` LIKE '%match%' ESCAPE '!'
    

$this->db->or_like()

위 메소드와 동일하지만 여러 인스턴스가 OR로 연결됩니다:

$this->db->like('title', 'match'); $this->db->or_like('body', $match);
// WHERE `title` LIKE '%match%' ESCAPE '!' OR  `body` LIKE '%match%' ESCAPE '!'

참고

or_like() 는 이전에 orlike() 로 알려져 있었으며, 이는 제거되었습니다.

$this->db->not_like()

이 메소드는 like() 와 동일하지만 NOT LIKE 문을 생성합니다:

$this->db->not_like('title', 'match');  // WHERE `title` NOT LIKE '%match% ESCAPE '!'

$this->db->or_not_like()

이 메소드는 not_like() 와 동일하지만 여러 인스턴스가 OR로 연결됩니다:

$this->db->like('title', 'match');
$this->db->or_not_like('body', 'match');
// WHERE `title` LIKE '%match% OR  `body` NOT LIKE '%match%' ESCAPE '!'

$this->db->group_by()

쿼리의 GROUP BY 부분을 작성할 수 있습니다:

$this->db->group_by("title"); // 결과: GROUP BY title

여러 값의 배열을 전달할 수도 있습니다:

$this->db->group_by(array("title", "date"));  // 결과: GROUP BY title, date

참고

group_by()는 이전에 groupby()로 알려져 있었으며, 이는 제거되었습니다.

$this->db->distinct()

쿼리에 “DISTINCT” 키워드를 추가합니다:

$this->db->distinct();
$this->db->get('table'); // 결과: SELECT DISTINCT * FROM table

$this->db->having()

쿼리의 HAVING 부분을 작성할 수 있습니다. 인수 1개 또는 2개의 두 가지 구문이 가능합니다:

$this->db->having('user_id = 45');  // 결과: HAVING user_id = 45
$this->db->having('user_id',  45);  // 결과: HAVING user_id = 45

여러 값의 배열을 전달할 수도 있습니다:

$this->db->having(array('title =' => 'My Title', 'id <' => $id));
// 결과: HAVING title = 'My Title', id < 45

CodeIgniter가 쿼리를 이스케이프하는 데이터베이스를 사용하는 경우 선택적 세 번째 인수를 FALSE로 설정하여 내용 이스케이핑을 방지할 수 있습니다.

$this->db->having('user_id',  45);  // MySQL과 같은 일부 데이터베이스에서 결과: HAVING `user_id` = 45
$this->db->having('user_id',  45, FALSE);  // 결과: HAVING user_id = 45

$this->db->or_having()

having()과 동일하지만 여러 절을 “OR”로 분리합니다.

$this->db->having_in()

적절한 경우 AND로 연결된 HAVING field IN (‘item’, ‘item’) SQL 쿼리를 생성합니다:

$names = array('Frank', 'Todd', 'James');
$this->db->having_in('username', $names);
// 결과: HAVING username IN ('Frank', 'Todd', 'James')

$this->db->or_having_in()

적절한 경우 OR로 연결된 HAVING field IN (‘item’, ‘item’) SQL 쿼리를 생성합니다:

$names = array('Frank', 'Todd', 'James');
$this->db->or_having_in('username', $names);
// 결과: OR username IN ('Frank', 'Todd', 'James')

$this->db->having_not_in()

적절한 경우 AND로 연결된 HAVING field NOT IN (‘item’, ‘item’) SQL 쿼리를 생성합니다:

$names = array('Frank', 'Todd', 'James');
$this->db->having_not_in('username', $names);
// 결과: HAVING username NOT IN ('Frank', 'Todd', 'James')

$this->db->or_having_not_in()

적절한 경우 OR로 연결된 HAVING field NOT IN (‘item’, ‘item’) SQL 쿼리를 생성합니다:

$names = array('Frank', 'Todd', 'James');
$this->db->or_having_not_in('username', $names);
// 결과: OR username NOT IN ('Frank', 'Todd', 'James')

결과 정렬

$this->db->order_by()

ORDER BY 절을 설정할 수 있습니다.

첫 번째 매개변수에는 정렬할 열의 이름이 포함됩니다.

두 번째 매개변수는 결과의 방향을 설정합니다. 옵션: ASC, DESC, RANDOM.

$this->db->order_by('title', 'DESC');
// 결과: ORDER BY `title` DESC

첫 번째 매개변수에 자체 문자열을 전달할 수도 있습니다:

$this->db->order_by('title DESC, name ASC');
// 결과: ORDER BY `title` DESC, `name` ASC

여러 필드가 필요한 경우 여러 함수 호출을 사용할 수 있습니다.

$this->db->order_by('title', 'DESC');
$this->db->order_by('name', 'ASC');
// 결과: ORDER BY `title` DESC, `name` ASC

RANDOM 방향 옵션을 선택하면 숫자 시드 값을 지정하지 않는 한 첫 번째 매개변수는 무시됩니다.

$this->db->order_by('title', 'RANDOM');
// 결과: ORDER BY RAND()

$this->db->order_by(42, 'RANDOM');
// 결과: ORDER BY RAND(42)

참고

order_by()는 이전에 orderby()로 알려져 있었으며, 이는 제거되었습니다.

참고

임의 정렬은 현재 Oracle에서 지원되지 않으며 대신 ASC로 기본값이 설정됩니다.

결과 제한 또는 카운트

$this->db->limit()

쿼리에서 반환하려는 행 수를 제한할 수 있습니다:

$this->db->limit(10);  // 결과: LIMIT 10

두 번째 매개변수는 결과 오프셋을 설정합니다.

$this->db->limit(10, 20);  // 결과: LIMIT 20, 10 (MySQL에서. 다른 데이터베이스는 구문이 약간 다릅니다)

$this->db->count_all_results()

특정 Query Builder 쿼리의 행 수를 확인할 수 있습니다. 쿼리는 where(), or_where(), like(), or_like() 등과 같은 Query Builder 제한자를 허용합니다. 예시:

echo $this->db->count_all_results('my_table');  // 25와 같은 정수를 출력합니다
$this->db->like('title', 'match');
$this->db->from('my_table');
echo $this->db->count_all_results(); // 17과 같은 정수를 출력합니다

그러나 이 메소드는 select() 에 전달한 필드 값도 초기화합니다. 유지해야 하는 경우 두 번째 매개변수로 FALSE를 전달할 수 있습니다:

echo $this->db->count_all_results('my_table', FALSE);

$this->db->count_all()

특정 테이블의 행 수를 확인할 수 있습니다. 첫 번째 매개변수에 테이블 이름을 제출하세요. 예시:

echo $this->db->count_all('my_table');  // 25와 같은 정수를 출력합니다

쿼리 그룹화

쿼리 그룹화를 사용하면 WHERE 절을 괄호로 묶어 그룹을 만들 수 있습니다. 이를 통해 복잡한 WHERE 절이 있는 쿼리를 만들 수 있습니다. 중첩 그룹이 지원됩니다. 예시:

$this->db->select('*')->from('my_table')
        ->group_start()
                ->where('a', 'a')
                ->or_group_start()
                        ->where('b', 'b')
                        ->where('c', 'c')
                ->group_end()
        ->group_end()
        ->where('d', 'd')
->get();

// 생성:
// SELECT * FROM (`my_table`) WHERE ( `a` = 'a' OR ( `b` = 'b' AND `c` = 'c' ) ) AND `d` = 'd'

참고

그룹은 균형을 맞춰야 하며, 모든 group_start()에 대해 group_end()가 있어야 합니다.

$this->db->group_start()

쿼리의 WHERE 절에 여는 괄호를 추가하여 새 그룹을 시작합니다.

$this->db->or_group_start()

쿼리의 WHERE 절에 여는 괄호를 추가하고 ‘OR’ 접두사를 붙여 새 그룹을 시작합니다.

$this->db->not_group_start()

쿼리의 WHERE 절에 여는 괄호를 추가하고 ‘NOT’ 접두사를 붙여 새 그룹을 시작합니다.

$this->db->or_not_group_start()

쿼리의 WHERE 절에 여는 괄호를 추가하고 ‘OR NOT’ 접두사를 붙여 새 그룹을 시작합니다.

$this->db->group_end()

쿼리의 WHERE 절에 닫는 괄호를 추가하여 현재 그룹을 종료합니다.

데이터 Insert

$this->db->insert()

제공한 데이터를 기반으로 insert 문자열을 생성하고 쿼리를 실행합니다. 함수에 배열 또는 오브젝트를 전달할 수 있습니다. 배열을 사용한 예시입니다:

$data = array(
        'title' => 'My title',
        'name' => 'My Name',
        'date' => 'My date'
);

$this->db->insert('mytable', $data);
// 결과: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')

첫 번째 매개변수에는 테이블 이름이 포함되고, 두 번째는 값의 연관 배열입니다.

오브젝트를 사용한 예시입니다:

/*
class Myclass {
        public $title = 'My Title';
        public $content = 'My Content';
        public $date = 'My Date';
}
*/

$object = new Myclass;
$this->db->insert('mytable', $object);
// 결과: INSERT INTO mytable (title, content, date) VALUES ('My Title', 'My Content', 'My Date')

첫 번째 매개변수에는 테이블 이름이 포함되고, 두 번째는 오브젝트입니다.

참고

모든 값은 자동으로 이스케이프되어 더 안전한 쿼리를 생성합니다.

$this->db->get_compiled_insert()

$this->db->insert()처럼 insert 쿼리를 컴파일하지만 쿼리를 실행하지 않습니다. 이 메소드는 SQL 쿼리를 문자열로 반환합니다.

예시:

$data = array(
        'title' => 'My title',
        'name'  => 'My Name',
        'date'  => 'My date'
);

$sql = $this->db->set($data)->get_compiled_insert('mytable');
echo $sql;

// 문자열 생성: INSERT INTO mytable (`title`, `name`, `date`) VALUES ('My title', 'My name', 'My date')

두 번째 매개변수를 사용하여 Query Builder 쿼리가 초기화될지 여부를 설정할 수 있습니다 (기본적으로 $this->db->insert()와 마찬가지로 초기화됩니다):

echo $this->db->set('title', 'My Title')->get_compiled_insert('mytable', FALSE);

// 문자열 생성: INSERT INTO mytable (`title`) VALUES ('My Title')

echo $this->db->set('content', 'My Content')->get_compiled_insert();

// 문자열 생성: INSERT INTO mytable (`title`, `content`) VALUES ('My Title', 'My Content')

위 예시에서 주목할 점은 두 번째 쿼리가 $this->db->from() 을 사용하지 않았고 첫 번째 매개변수에 테이블 이름을 전달하지 않았다는 것입니다. 이 이유는 쿼리가 값을 초기화하는 $this->db->insert() 또는 직접 $this->db->reset_query() 를 사용하여 실행되지 않았기 때문입니다.

참고

이 메소드는 일괄 insert에서는 작동하지 않습니다.

$this->db->insert_batch()

제공한 데이터를 기반으로 insert 문자열을 생성하고 쿼리를 실행합니다. 함수에 배열 또는 오브젝트를 전달할 수 있습니다. 배열을 사용한 예시입니다:

$data = array(
        array(
                'title' => 'My title',
                'name' => 'My Name',
                'date' => 'My date'
        ),
        array(
                'title' => 'Another title',
                'name' => 'Another Name',
                'date' => 'Another date'
        )
);

$this->db->insert_batch('mytable', $data);
// 결과: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')

첫 번째 매개변수에는 테이블 이름이 포함되고, 두 번째는 값의 연관 배열입니다.

참고

모든 값은 자동으로 이스케이프되어 더 안전한 쿼리를 생성합니다.

데이터 Update

$this->db->replace()

이 메소드는 PRIMARYUNIQUE 키를 결정 요소로 사용하는 (선택적) DELETE + INSERT의 SQL 표준인 REPLACE 문을 실행합니다. 이 경우 select(), update(), delete(), insert() 호출의 다양한 조합으로 복잡한 로직을 구현할 필요가 없습니다.

예시:

$data = array(
        'title' => 'My title',
        'name'  => 'My Name',
        'date'  => 'My date'
);

$this->db->replace('table', $data);

// 실행: REPLACE INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')

위의 예에서 title 필드가 기본 키라고 가정하면 title 값으로 ‘My title’을 포함하는 행이 있으면 해당 행이 삭제되고 새 행 데이터로 대체됩니다.

set() 메소드의 사용도 허용되며, insert() 와 마찬가지로 모든 필드는 자동으로 이스케이프됩니다.

$this->db->set()

이 함수를 사용하면 insert 또는 update를 위한 값을 설정할 수 있습니다.

insert 또는 update 함수에 직접 데이터 배열을 전달하는 대신 사용할 수 있습니다:

$this->db->set('name', $name);
$this->db->insert('mytable');  // 결과: INSERT INTO mytable (`name`) VALUES ('{$name}')

여러 함수 호출을 사용하면 insert 또는 update 여부에 따라 적절하게 조합됩니다:

$this->db->set('name', $name);
$this->db->set('title', $title);
$this->db->set('status', $status);
$this->db->insert('mytable');

set() 은 선택적 세 번째 매개변수($escape)도 허용하며, FALSE로 설정하면 데이터가 이스케이프되지 않습니다. 차이를 설명하기 위해 escape 매개변수를 사용하는 경우와 사용하지 않는 경우에 set() 이 사용됩니다.

$this->db->set('field', 'field+1', FALSE);
$this->db->where('id', 2);
$this->db->update('mytable'); // gives UPDATE mytable SET field = field+1 WHERE id = 2

$this->db->set('field', 'field+1');
$this->db->where('id', 2);
$this->db->update('mytable'); // gives UPDATE `mytable` SET `field` = 'field+1' WHERE `id` = 2

연관 배열을 이 함수에 전달할 수도 있습니다:

$array = array(
        'name' => $name,
        'title' => $title,
        'status' => $status
);

$this->db->set($array);
$this->db->insert('mytable');

또는 오브젝트:

/*
class Myclass {
        public $title = 'My Title';
        public $content = 'My Content';
        public $date = 'My Date';
}
*/

$object = new Myclass;
$this->db->set($object);
$this->db->insert('mytable');

$this->db->update()

제공한 데이터를 기반으로 update 문자열을 생성하고 쿼리를 실행합니다. 함수에 배열 또는 오브젝트를 전달할 수 있습니다. 배열을 사용한 예시입니다:

$data = array(
        'title' => $title,
        'name' => $name,
        'date' => $date
);

$this->db->where('id', $id);
$this->db->update('mytable', $data);
// 결과:
//
//      UPDATE mytable
//      SET title = '{$title}', name = '{$name}', date = '{$date}'
//      WHERE id = $id

또는 오브젝트를 제공할 수 있습니다:

/*
class Myclass {
        public $title = 'My Title';
        public $content = 'My Content';
        public $date = 'My Date';
}
*/

$object = new Myclass;
$this->db->where('id', $id);
$this->db->update('mytable', $object);
// 결과:
//
// UPDATE `mytable`
// SET `title` = '{$title}', `name` = '{$name}', `date` = '{$date}'
// WHERE id = `$id`

참고

모든 값은 자동으로 이스케이프되어 더 안전한 쿼리를 생성합니다.

WHERE 절을 설정하는 $this->db->where() 함수의 사용에 주목하세요. 이 정보를 문자열로 직접 update 함수에 전달할 수도 있습니다:

$this->db->update('mytable', $data, "id = 4");

또는 배열로:

$this->db->update('mytable', $data, array('id' => $id));

update를 수행할 때 위에 설명된 $this->db->set() 함수를 사용할 수도 있습니다.

$this->db->update_batch()

제공한 데이터를 기반으로 update 문자열을 생성하고 쿼리를 실행합니다. 함수에 배열 또는 오브젝트를 전달할 수 있습니다. 배열을 사용한 예시입니다:

$data = array(
   array(
      'title' => 'My title' ,
      'name' => 'My Name 2' ,
      'date' => 'My date 2'
   ),
   array(
      'title' => 'Another title' ,
      'name' => 'Another Name 2' ,
      'date' => 'Another date 2'
   )
);

$this->db->update_batch('mytable', $data, 'title');

// 결과:
// UPDATE `mytable` SET `name` = CASE
// WHEN `title` = 'My title' THEN 'My Name 2'
// WHEN `title` = 'Another title' THEN 'Another Name 2'
// ELSE `name` END,
// `date` = CASE
// WHEN `title` = 'My title' THEN 'My date 2'
// WHEN `title` = 'Another title' THEN 'Another date 2'
// ELSE `date` END
// WHERE `title` IN ('My title','Another title')

첫 번째 매개변수에는 테이블 이름이 포함되고, 두 번째는 값의 연관 배열이며, 세 번째 매개변수는 where 키입니다.

참고

모든 값은 자동으로 이스케이프되어 더 안전한 쿼리를 생성합니다.

참고

affected_rows() 는 이 메소드의 특성상 올바른 결과를 제공하지 않습니다. 대신 update_batch() 는 영향을 받은 행 수를 반환합니다.

$this->db->get_compiled_update()

이것은 INSERT SQL 문자열 대신 UPDATE SQL 문자열을 생성한다는 점을 제외하고는 $this->db->get_compiled_insert() 와 완전히 동일하게 작동합니다.

자세한 내용은 $this->db->get_compiled_insert() 문서를 참조하세요.

참고

이 메소드는 일괄 update에서는 작동하지 않습니다.

데이터 Delete

$this->db->delete()

delete SQL 문자열을 생성하고 쿼리를 실행합니다.

$this->db->delete('mytable', array('id' => $id));  // 결과: // DELETE FROM mytable  // WHERE id = $id

첫 번째 매개변수는 테이블 이름이고, 두 번째는 where 절입니다. 함수의 두 번째 매개변수에 데이터를 전달하는 대신 where() 또는 or_where() 함수를 사용할 수도 있습니다:

$this->db->where('id', $id);
$this->db->delete('mytable');

// 결과:
// DELETE FROM mytable
// WHERE id = $id

둘 이상의 테이블에서 데이터를 삭제하려는 경우 테이블 이름 배열을 delete()에 전달할 수 있습니다.

$tables = array('table1', 'table2', 'table3');
$this->db->where('id', '5');
$this->db->delete($tables);

테이블의 모든 데이터를 삭제하려면 truncate() 함수 또는 empty_table()을 사용할 수 있습니다.

$this->db->empty_table()

delete SQL 문자열을 생성하고 쿼리를 실행합니다:

$this->db->empty_table('mytable'); // 결과: DELETE FROM mytable

$this->db->truncate()

truncate SQL 문자열을 생성하고 쿼리를 실행합니다.

$this->db->from('mytable');
$this->db->truncate();

// 또는

$this->db->truncate('mytable');

// 결과:
// TRUNCATE mytable

참고

TRUNCATE 명령을 사용할 수 없는 경우 truncate()는 “DELETE FROM table”로 실행됩니다.

$this->db->get_compiled_delete()

이것은 INSERT SQL 문자열 대신 DELETE SQL 문자열을 생성한다는 점을 제외하고는 $this->db->get_compiled_insert() 와 완전히 동일하게 작동합니다.

자세한 내용은 $this->db->get_compiled_insert() 문서를 참조하세요.

메소드 체이닝

메소드 체이닝을 사용하면 여러 함수를 연결하여 구문을 단순화할 수 있습니다. 예시:

$query = $this->db->select('title')
                ->where('id', $id)
                ->limit(10, 20)
                ->get('mytable');

Query Builder 캐싱

“진정한” 캐싱은 아니지만 Query Builder를 사용하면 쿼리의 특정 부분을 저장(“캐시”)하여 스크립트 실행의 나중 시점에 재사용할 수 있습니다. 일반적으로 Query Builder 호출이 완료되면 저장된 모든 정보가 다음 호출을 위해 초기화됩니다. 캐싱을 사용하면 이 초기화를 방지하고 정보를 쉽게 재사용할 수 있습니다.

캐시된 호출은 누적됩니다. 캐시된 select() 호출을 2회, 캐시되지 않은 select() 호출을 2회 하면 결과적으로 4번의 select() 호출이 됩니다. 세 가지 캐싱 함수를 사용할 수 있습니다:

$this->db->start_cache()

캐싱을 시작하려면 이 함수를 호출해야 합니다. 올바른 유형의 모든 Query Builder 쿼리 (지원되는 쿼리는 아래 참조)가 나중에 사용하기 위해 저장됩니다.

$this->db->stop_cache()

캐싱을 중지하기 위해 이 함수를 호출할 수 있습니다.

$this->db->flush_cache()

이 함수는 Query Builder 캐시에서 모든 항목을 삭제합니다.

캐싱 예시

사용 예시입니다:

$this->db->start_cache();
$this->db->select('field1');
$this->db->stop_cache();
$this->db->get('tablename');
//생성: SELECT `field1` FROM (`tablename`)

$this->db->select('field2');
$this->db->get('tablename');
//생성:  SELECT `field1`, `field2` FROM (`tablename`)

$this->db->flush_cache();
$this->db->select('field2');
$this->db->get('tablename');
//생성:  SELECT `field2` FROM (`tablename`)

참고

캐시할 수 있는 문: select, from, join, where, like, group_by, having, order_by

Query Builder 초기화

$this->db->reset_query()

Query Builder 초기화를 사용하면 $this->db->get() 또는 $this->db->insert()와 같은 메소드를 먼저 실행하지 않고 쿼리를 새로 시작할 수 있습니다. 쿼리를 실행하는 메소드와 마찬가지로 Query Builder 캐싱을 사용하여 캐시한 항목은 초기화되지 않습니다.

이것은 Query Builder를 사용하여 SQL을 생성하지만 (예: $this->db->get_compiled_select() ) 예를 들어 쿼리를 실행하기로 선택하는 상황에서 유용합니다:

// get_compiled_select 메소드의 두 번째 매개변수가 FALSE임을 주의하세요
$sql = $this->db->select(array('field1','field2'))
                                ->where('field3',5)
                                ->get_compiled_select('mytable', FALSE);

// ...
// SQL 코드로 뭔가 특별한 작업을 수행... 나중에 실행하기 위해 cron 스크립트에
// 추가하는 것 같은...
// ...

$data = $this->db->get()->result_array();

// 다음 쿼리의 결과 배열을 실행하고 반환합니다:
// SELECT field1, field1 from mytable where field3 = 5;

참고

Query Builder 캐싱 기능을 사용하면서 쿼리를 초기화하지 않고 get_compiled_select() 를 두 번 호출하면 캐시가 두 번 병합됩니다. 그 결과 예를 들어 select()를 캐시하는 경우 동일한 필드가 두 번 선택됩니다.

클래스 레퍼런스

class CI_DB_query_builder
reset_query()
반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

현재 Query Builder 상태를 초기화합니다. 특정 조건에서 취소될 수 있는 쿼리를 빌드할 때 유용합니다.

start_cache()
반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

Query Builder 캐시를 시작합니다.

stop_cache()
반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

Query Builder 캐시를 중지합니다.

flush_cache()
반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

Query Builder 캐시를 비웁니다.

set_dbprefix([$prefix = ''])
매개변수:
  • $prefix (string) – 사용할 새 접두사

반환:

사용 중인 DB 접두사

반환 형식:

string

재연결 없이 데이터베이스 접두사를 설정합니다.

dbprefix([$table = ''])
매개변수:
  • $table (string) – 접두사를 추가할 테이블 이름

반환:

접두사가 추가된 테이블 이름

반환 형식:

string

구성에 접두사가 있으면 데이터베이스 접두사를 추가합니다.

count_all_results([$table = ''[, $reset = TRUE]])
매개변수:
  • $table (string) – 테이블 이름

  • $reset (bool) – SELECT 값을 초기화할지 여부

반환:

쿼리 결과의 행 수

반환 형식:

int

Query Builder 쿼리에 의해 반환된 모든 레코드를 카운트하는 플랫폼별 쿼리 문자열을 생성합니다.

get([$table = ''[, $limit = NULL[, $offset = NULL]]])
매개변수:
  • $table (string) – 쿼리할 테이블

  • $limit (int) – LIMIT 절

  • $offset (int) – OFFSET 절

반환:

CI_DB_result 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_result

이미 호출된 Query Builder 메소드를 기반으로 SELECT 문을 컴파일하고 실행합니다.

get_where([$table = ''[, $where = NULL[, $limit = NULL[, $offset = NULL]]]])
매개변수:
  • $table (mixed) – 데이터를 가져올 테이블; 문자열 또는 배열

  • $where (string) – WHERE 절

  • $limit (int) – LIMIT 절

  • $offset (int) – OFFSET 절

반환:

CI_DB_result 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_result

get() 과 동일하지만 WHERE를 직접 추가할 수 있습니다.

select([$select = '*'[, $escape = NULL]])
매개변수:
  • $select (string) – 쿼리의 SELECT 부분

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 SELECT 절을 추가합니다.

select_avg([$select = ''[, $alias = '']])
매개변수:
  • $select (string) – 평균을 계산할 필드

  • $alias (string) – 결과 값 이름의 별칭

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 SELECT AVG(field) 절을 추가합니다.

select_max([$select = ''[, $alias = '']])
매개변수:
  • $select (string) – 최대값을 계산할 필드

  • $alias (string) – 결과 값 이름의 별칭

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 SELECT MAX(field) 절을 추가합니다.

select_min([$select = ''[, $alias = '']])
매개변수:
  • $select (string) – 최소값을 계산할 필드

  • $alias (string) – 결과 값 이름의 별칭

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 SELECT MIN(field) 절을 추가합니다.

select_sum([$select = ''[, $alias = '']])
매개변수:
  • $select (string) – 합계를 계산할 필드

  • $alias (string) – 결과 값 이름의 별칭

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 SELECT SUM(field) 절을 추가합니다.

distinct([$val = TRUE])
매개변수:
  • $val (bool) – “distinct” 플래그의 원하는 값

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리 빌더에게 쿼리의 SELECT 부분에 DISTINCT 절을 추가하도록 지시하는 플래그를 설정합니다.

from($from)
매개변수:
  • $from (mixed) – 테이블 이름; 문자열 또는 배열

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리의 FROM 절을 지정합니다.

join($table, $cond[, $type = ''[, $escape = NULL]])
매개변수:
  • $table (string) – 조인할 테이블 이름

  • $cond (string) – JOIN ON 조건

  • $type (string) – JOIN 유형

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 JOIN 절을 추가합니다.

where($key[, $value = NULL[, $escape = NULL]])
매개변수:
  • $key (mixed) – 비교할 필드 이름 또는 연관 배열

  • $value (mixed) – 단일 키인 경우 이 값과 비교

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

쿼리의 WHERE 부분을 생성합니다. 여러 호출은 ‘AND’로 구분됩니다.

or_where($key[, $value = NULL[, $escape = NULL]])
매개변수:
  • $key (mixed) – 비교할 필드 이름 또는 연관 배열

  • $value (mixed) – 단일 키인 경우 이 값과 비교

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

쿼리의 WHERE 부분을 생성합니다. 여러 호출은 ‘OR’로 구분됩니다.

or_where_in([$key[, array $values[, $escape = NULL]]])
매개변수:
  • $key (string) – 검색할 필드

  • $values (array) – 검색할 값

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

적절한 경우 ‘OR’로 연결된 WHERE field IN(‘item’, ‘item’) SQL 쿼리를 생성합니다.

or_where_not_in([$key[, array $values[, $escape = NULL]]])
매개변수:
  • $key (string) – 검색할 필드

  • $values (array) – 검색할 값

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

적절한 경우 ‘OR’로 연결된 WHERE field NOT IN(‘item’, ‘item’) SQL 쿼리를 생성합니다.

where_in([$key[, array $values[, $escape = NULL]]])
매개변수:
  • $key (string) – 검사할 필드 이름

  • $values (array) – 대상 값의 배열

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

적절한 경우 ‘AND’로 연결된 WHERE field IN(‘item’, ‘item’) SQL 쿼리를 생성합니다.

where_not_in([$key[, array $values[, $escape = NULL]]])
매개변수:
  • $key (string) – 검사할 필드 이름

  • $values (array) – 대상 값의 배열

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

적절한 경우 ‘AND’로 연결된 WHERE field NOT IN(‘item’, ‘item’) SQL 쿼리를 생성합니다.

group_start()
반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

내부 조건에 AND를 사용하는 그룹 표현식을 시작합니다.

or_group_start()
반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

내부 조건에 OR를 사용하는 그룹 표현식을 시작합니다.

not_group_start()
반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

내부 조건에 AND NOT을 사용하는 그룹 표현식을 시작합니다.

or_not_group_start()
반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

내부 조건에 OR NOT을 사용하는 그룹 표현식을 시작합니다.

group_end()
반환:

DB_query_builder 인스턴스

반환 형식:

object

그룹 표현식을 종료합니다.

like($field[, $match = ''[, $side = 'both'[, $escape = NULL]]])
매개변수:
  • $field (string) – 필드 이름

  • $match (string) – 매칭할 텍스트 부분

  • $side (string) – 표현식의 어느 쪽에 ‘%’ 와일드카드를 놓을지

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 LIKE 절을 추가하며, 여러 호출은 AND로 구분됩니다.

or_like($field[, $match = ''[, $side = 'both'[, $escape = NULL]]])
매개변수:
  • $field (string) – 필드 이름

  • $match (string) – 매칭할 텍스트 부분

  • $side (string) – 표현식의 어느 쪽에 ‘%’ 와일드카드를 놓을지

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 LIKE 절을 추가하며, 여러 클래스는 OR로 구분됩니다.

not_like($field[, $match = ''[, $side = 'both'[, $escape = NULL]]])
매개변수:
  • $field (string) – 필드 이름

  • $match (string) – 매칭할 텍스트 부분

  • $side (string) – 표현식의 어느 쪽에 ‘%’ 와일드카드를 놓을지

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 NOT LIKE 절을 추가하며, 여러 호출은 AND로 구분됩니다.

or_not_like($field[, $match = ''[, $side = 'both'[, $escape = NULL]]])
매개변수:
  • $field (string) – 필드 이름

  • $match (string) – 매칭할 텍스트 부분

  • $side (string) – 표현식의 어느 쪽에 ‘%’ 와일드카드를 놓을지

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 NOT LIKE 절을 추가하며, 여러 호출은 OR로 구분됩니다.

having($key[, $value = NULL[, $escape = NULL]])
매개변수:
  • $key (mixed) – 식별자(문자열) 또는 필드/값 쌍의 연관 배열

  • $value (string) – $key가 식별자인 경우 찾는 값

  • $escape (string) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 HAVING 절을 추가하며, 여러 호출은 AND로 구분됩니다.

or_having($key[, $value = NULL[, $escape = NULL]])
매개변수:
  • $key (mixed) – 식별자(문자열) 또는 필드/값 쌍의 연관 배열

  • $value (string) – $key가 식별자인 경우 찾는 값

  • $escape (string) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 HAVING 절을 추가하며, 여러 호출은 OR로 구분됩니다.

or_having_in([$key[, array $values[, $escape = NULL]]])
매개변수:
  • $key (string) – 검색할 필드

  • $values (array) – 검색할 값

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

적절한 경우 ‘OR’로 연결된 HAVING field IN(‘item’, ‘item’) SQL 쿼리를 생성합니다.

or_having_not_in([$key[, array $values[, $escape = NULL]]])
매개변수:
  • $key (string) – 검색할 필드

  • $values (array) – 검색할 값

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

적절한 경우 ‘OR’로 연결된 HAVING field NOT IN(‘item’, ‘item’) SQL 쿼리를 생성합니다.

having_in([$key[, array $values[, $escape = NULL]]])
매개변수:
  • $key (string) – 검사할 필드 이름

  • $values (array) – 대상 값의 배열

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

적절한 경우 ‘AND’로 연결된 HAVING field IN(‘item’, ‘item’) SQL 쿼리를 생성합니다.

having_not_in([$key[, array $values[, $escape = NULL]]])
매개변수:
  • $key (string) – 검사할 필드 이름

  • $values (array) – 대상 값의 배열

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

DB_query_builder 인스턴스

반환 형식:

object

적절한 경우 ‘AND’로 연결된 HAVING field NOT IN(‘item’, ‘item’) SQL 쿼리를 생성합니다.

group_by($by[, $escape = NULL])
매개변수:
  • $by (mixed) – 그룹화할 필드; 문자열 또는 배열

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 GROUP BY 절을 추가합니다.

order_by($orderby[, $direction = ''[, $escape = NULL]])
매개변수:
  • $orderby (string) – 정렬할 필드

  • $direction (string) – 요청된 순서 - ASC, DESC 또는 random

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 ORDER BY 절을 추가합니다.

limit($value[, $offset = 0])
매개변수:
  • $value (int) – 결과를 제한할 행 수

  • $offset (int) – 건너뛸 행 수

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 LIMIT 및 OFFSET 절을 추가합니다.

offset($offset)
매개변수:
  • $offset (int) – 건너뛸 행 수

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

쿼리에 OFFSET 절을 추가합니다.

set($key[, $value = ''[, $escape = NULL]])
매개변수:
  • $key (mixed) – 필드 이름 또는 필드/값 쌍의 배열

  • $value (string) – $key가 단일 필드인 경우 필드 값

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

나중에 insert(), update() 또는 replace() 에 전달할 필드/값 쌍을 추가합니다.

insert([$table = ''[, $set = NULL[, $escape = NULL]]])
매개변수:
  • $table (string) – 테이블 이름

  • $set (array) – 필드/값 쌍의 연관 배열

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

INSERT 문을 컴파일하고 실행합니다.

insert_batch($table[, $set = NULL[, $escape = NULL[, $batch_size = 100]]])
매개변수:
  • $table (string) – 테이블 이름

  • $set (array) – 삽입할 데이터

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

  • $batch_size (int) – 한 번에 삽입할 행 수

반환:

삽입된 행 수 또는 실패 시 FALSE

반환 형식:

mixed

일괄 INSERT 문을 컴파일하고 실행합니다.

참고

$batch_size 보다 많은 행이 제공되면 여러 INSERT 쿼리가 실행되며, 각각 최대 $batch_size 행을 삽입하려고 시도합니다.

set_insert_batch($key[, $value = ''[, $escape = NULL]])
매개변수:
  • $key (mixed) – 필드 이름 또는 필드/값 쌍의 배열

  • $value (string) – $key가 단일 필드인 경우 필드 값

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

나중에 insert_batch() 를 통해 테이블에 삽입할 필드/값 쌍을 추가합니다.

update([$table = ''[, $set = NULL[, $where = NULL[, $limit = NULL]]]])
매개변수:
  • $table (string) – 테이블 이름

  • $set (array) – 필드/값 쌍의 연관 배열

  • $where (string) – WHERE 절

  • $limit (int) – LIMIT 절

반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

UPDATE 문을 컴파일하고 실행합니다.

update_batch($table[, $set = NULL[, $value = NULL[, $batch_size = 100]]])
매개변수:
  • $table (string) – 테이블 이름

  • $set (array) – 필드 이름 또는 필드/값 쌍의 연관 배열

  • $value (string) – $set이 단일 필드인 경우 필드 값

  • $batch_size (int) – 단일 쿼리에서 그룹화할 조건 수

반환:

업데이트된 행 수 또는 실패 시 FALSE

반환 형식:

mixed

일괄 UPDATE 문을 컴파일하고 실행합니다.

참고

$batch_size 보다 많은 필드/값 쌍이 제공되면 여러 쿼리가 실행되며, 각각 최대 $batch_size 필드/값 쌍을 처리합니다.

set_update_batch($key[, $value = ''[, $escape = NULL]])
매개변수:
  • $key (mixed) – 필드 이름 또는 필드/값 쌍의 배열

  • $value (string) – $key가 단일 필드인 경우 필드 값

  • $escape (bool) – 값과 식별자를 이스케이프할지 여부

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝)

반환 형식:

CI_DB_query_builder

나중에 update_batch() 를 통해 테이블에서 업데이트할 필드/값 쌍을 추가합니다.

replace([$table = ''[, $set = NULL]])
매개변수:
  • $table (string) – 테이블 이름

  • $set (array) – 필드/값 쌍의 연관 배열

반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

REPLACE 문을 컴파일하고 실행합니다.

delete([$table = ''[, $where = ''[, $limit = NULL[, $reset_data = TRUE]]]])
매개변수:
  • $table (mixed) – 삭제할 테이블; 문자열 또는 배열

  • $where (string) – WHERE 절

  • $limit (int) – LIMIT 절

  • $reset_data (bool) – 쿼리 “write” 절을 초기화하려면 TRUE

반환:

CI_DB_query_builder 인스턴스 (메소드 체이닝) 또는 실패 시 FALSE

반환 형식:

mixed

DELETE 쿼리를 컴파일하고 실행합니다.

truncate([$table = ''])
매개변수:
  • $table (string) – 테이블 이름

반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

테이블에 TRUNCATE 문을 실행합니다.

참고

사용 중인 데이터베이스 플랫폼이 TRUNCATE를 지원하지 않는 경우 대신 DELETE 문이 사용됩니다.

empty_table([$table = ''])
매개변수:
  • $table (string) – 테이블 이름

반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

DELETE 문을 통해 테이블의 모든 레코드를 삭제합니다.

get_compiled_select([$table = ''[, $reset = TRUE]])
매개변수:
  • $table (string) – 테이블 이름

  • $reset (bool) – 현재 QB 값을 초기화할지 여부

반환:

문자열로서의 컴파일된 SQL 문

반환 형식:

string

SELECT 문을 컴파일하고 문자열로 반환합니다.

get_compiled_insert([$table = ''[, $reset = TRUE]])
매개변수:
  • $table (string) – 테이블 이름

  • $reset (bool) – 현재 QB 값을 초기화할지 여부

반환:

문자열로서의 컴파일된 SQL 문

반환 형식:

string

INSERT 문을 컴파일하고 문자열로 반환합니다.

get_compiled_update([$table = ''[, $reset = TRUE]])
매개변수:
  • $table (string) – 테이블 이름

  • $reset (bool) – 현재 QB 값을 초기화할지 여부

반환:

문자열로서의 컴파일된 SQL 문

반환 형식:

string

UPDATE 문을 컴파일하고 문자열로 반환합니다.

get_compiled_delete([$table = ''[, $reset = TRUE]])
매개변수:
  • $table (string) – 테이블 이름

  • $reset (bool) – 현재 QB 값을 초기화할지 여부

반환:

문자열로서의 컴파일된 SQL 문

반환 형식:

string

DELETE 문을 컴파일하고 문자열로 반환합니다.