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 절을 설정할 수 있습니다:
참고
이 함수에 전달된 모든 값은 자동으로 이스케이프되어 더 안전한 쿼리를 생성합니다.
단순 키/값 메소드:
$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'
커스텀 키/값 메소드:
비교를 제어하기 위해 첫 번째 매개변수에 연산자를 포함할 수 있습니다:
$this->db->where('name !=', $name); $this->db->where('id <', $id); // 결과: WHERE name != 'Joe' AND id < 45
연관 배열 메소드:
$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);
커스텀 문자열:
절을 수동으로 작성할 수 있습니다:
$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 절을 생성할 수 있습니다.
참고
이 메소드에 전달된 모든 값은 자동으로 이스케이프됩니다.
단순 키/값 메소드:
$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 '!'
연관 배열 메소드:
$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()
이 메소드는 PRIMARY 및 UNIQUE 키를 결정 요소로 사용하는 (선택적) 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 인스턴스 (메소드 체이닝)
- 반환 형식:
현재 Query Builder 상태를 초기화합니다. 특정 조건에서 취소될 수 있는 쿼리를 빌드할 때 유용합니다.
- start_cache()¶
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
Query Builder 캐시를 시작합니다.
- stop_cache()¶
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
Query Builder 캐시를 중지합니다.
- flush_cache()¶
- 반환:
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 인스턴스 (메소드 체이닝)
- 반환 형식:
이미 호출된 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 인스턴스 (메소드 체이닝)
- 반환 형식:
get()과 동일하지만 WHERE를 직접 추가할 수 있습니다.
- select([$select = '*'[, $escape = NULL]])¶
- 매개변수:
$select (
string) – 쿼리의 SELECT 부분$escape (
bool) – 값과 식별자를 이스케이프할지 여부
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 SELECT 절을 추가합니다.
- select_avg([$select = ''[, $alias = '']])¶
- 매개변수:
$select (
string) – 평균을 계산할 필드$alias (
string) – 결과 값 이름의 별칭
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 SELECT AVG(field) 절을 추가합니다.
- select_max([$select = ''[, $alias = '']])¶
- 매개변수:
$select (
string) – 최대값을 계산할 필드$alias (
string) – 결과 값 이름의 별칭
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 SELECT MAX(field) 절을 추가합니다.
- select_min([$select = ''[, $alias = '']])¶
- 매개변수:
$select (
string) – 최소값을 계산할 필드$alias (
string) – 결과 값 이름의 별칭
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 SELECT MIN(field) 절을 추가합니다.
- select_sum([$select = ''[, $alias = '']])¶
- 매개변수:
$select (
string) – 합계를 계산할 필드$alias (
string) – 결과 값 이름의 별칭
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 SELECT SUM(field) 절을 추가합니다.
- distinct([$val = TRUE])¶
- 매개변수:
$val (
bool) – “distinct” 플래그의 원하는 값
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리 빌더에게 쿼리의 SELECT 부분에 DISTINCT 절을 추가하도록 지시하는 플래그를 설정합니다.
- from($from)¶
- 매개변수:
$from (
mixed) – 테이블 이름; 문자열 또는 배열
- 반환:
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 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 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 인스턴스 (메소드 체이닝)
- 반환 형식:
내부 조건에 AND를 사용하는 그룹 표현식을 시작합니다.
- or_group_start()¶
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
내부 조건에 OR를 사용하는 그룹 표현식을 시작합니다.
- not_group_start()¶
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
내부 조건에 AND NOT을 사용하는 그룹 표현식을 시작합니다.
- or_not_group_start()¶
- 반환:
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 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 LIKE 절을 추가하며, 여러 호출은 AND로 구분됩니다.
- or_like($field[, $match = ''[, $side = 'both'[, $escape = NULL]]])¶
- 매개변수:
$field (
string) – 필드 이름$match (
string) – 매칭할 텍스트 부분$side (
string) – 표현식의 어느 쪽에 ‘%’ 와일드카드를 놓을지$escape (
bool) – 값과 식별자를 이스케이프할지 여부
- 반환:
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 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 NOT LIKE 절을 추가하며, 여러 호출은 AND로 구분됩니다.
- or_not_like($field[, $match = ''[, $side = 'both'[, $escape = NULL]]])¶
- 매개변수:
$field (
string) – 필드 이름$match (
string) – 매칭할 텍스트 부분$side (
string) – 표현식의 어느 쪽에 ‘%’ 와일드카드를 놓을지$escape (
bool) – 값과 식별자를 이스케이프할지 여부
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 NOT LIKE 절을 추가하며, 여러 호출은 OR로 구분됩니다.
- having($key[, $value = NULL[, $escape = NULL]])¶
- 매개변수:
$key (
mixed) – 식별자(문자열) 또는 필드/값 쌍의 연관 배열$value (
string) – $key가 식별자인 경우 찾는 값$escape (
string) – 값과 식별자를 이스케이프할지 여부
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 HAVING 절을 추가하며, 여러 호출은 AND로 구분됩니다.
- or_having($key[, $value = NULL[, $escape = NULL]])¶
- 매개변수:
$key (
mixed) – 식별자(문자열) 또는 필드/값 쌍의 연관 배열$value (
string) – $key가 식별자인 경우 찾는 값$escape (
string) – 값과 식별자를 이스케이프할지 여부
- 반환:
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 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 GROUP BY 절을 추가합니다.
- order_by($orderby[, $direction = ''[, $escape = NULL]])¶
- 매개변수:
$orderby (
string) – 정렬할 필드$direction (
string) – 요청된 순서 - ASC, DESC 또는 random$escape (
bool) – 값과 식별자를 이스케이프할지 여부
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 ORDER BY 절을 추가합니다.
- limit($value[, $offset = 0])¶
- 매개변수:
$value (
int) – 결과를 제한할 행 수$offset (
int) – 건너뛸 행 수
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 LIMIT 및 OFFSET 절을 추가합니다.
- offset($offset)¶
- 매개변수:
$offset (
int) – 건너뛸 행 수
- 반환:
CI_DB_query_builder 인스턴스 (메소드 체이닝)
- 반환 형식:
쿼리에 OFFSET 절을 추가합니다.
- set($key[, $value = ''[, $escape = NULL]])¶
- 매개변수:
$key (
mixed) – 필드 이름 또는 필드/값 쌍의 배열$value (
string) – $key가 단일 필드인 경우 필드 값$escape (
bool) – 값과 식별자를 이스케이프할지 여부
- 반환:
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 인스턴스 (메소드 체이닝)
- 반환 형식:
나중에
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 인스턴스 (메소드 체이닝)
- 반환 형식:
나중에
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 문을 컴파일하고 문자열로 반환합니다.