코드이그나이터 4 쿼리실행 및 쿼리 결과 생성
코드이그나이터 4 쿼리 실행
개인적으로 쿼리를 실행할 때 정규 쿼리를 많이 사용합니다.
왜냐하면 직관적인 부분이 가장 큽니다.
우선 테스트 전에 데이터베이스와 테이블이 있다고 가정하겠습니다.
없을 경우 아래 부분을 참고 바랍니다.
데이터베이스 ci4tutorial 생성후
board 테이블 생성 합니다.
CREATE TABLE `board` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
`writer` varchar(255) NOT NULL,
`in_date` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `title` (`title`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
데이터도 입력해야 겠죠.
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (1, '11월 1일', '1일 내용', '테스트', '2021-11-08 10:00:22');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (2, '11월 2일', '2일 내용', '테스트', '2021-11-08 10:00:24');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (3, '11월 3일', '3일 내용', '테스트', '2021-11-08 10:00:25');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (4, '11월 4일', '4일 내용', '테스트', '2021-11-08 10:00:26');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (5, '11월 5일', '5일 내용', '테스트', '2021-11-08 10:00:27');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (6, '11월 6일', '6일 내용', '테스트', '2021-11-08 10:00:29');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (7, '11월 7일', '7일 내용', '테스트', '2021-11-08 10:00:31');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (8, '11월 8일', '8일 내용', '테스트', '2021-11-08 10:00:32');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (9, '11월 9일', '9일 내용', '테스트', '2021-11-08 10:00:33');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (10, '11월 10일', '10일 내용', '테스트', '2021-11-08 10:00:35');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (11, '11월 11일', '11일 내용', '테스트', '2021-11-08 10:00:37');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (12, '11월 12일', '12일 내용', '테스트', '2021-11-08 10:00:38');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (13, '11월 13일', '13일 내용', '테스트', '2021-11-08 10:00:40');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (14, '11월 14일', '14일 내용', '테스트', '2021-11-08 10:00:42');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (15, '11월 15일', '15일 내용', '테스트', '2021-11-08 10:00:43');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (16, '11월 16일', '16일 내용', '테스트', '2021-11-08 10:00:44');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (17, '11월 17일', '17일 내용', '테스트', '2021-11-08 10:00:45');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (18, '11월 18일', '18일 내용', '테스트', '2021-11-08 10:00:47');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (19, '11월 19일', '19일 내용', '테스트', '2021-11-08 10:00:48');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (20, '11월 20일', '20일 내용', '테스트', '2021-11-08 10:00:49');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (21, '11월 21일', '21일 내용', '테스트', '2021-11-08 10:00:50');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (22, '11월 22일', '22일 내용', '테스트', '2021-11-08 10:00:51');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (23, '11월 23일', '23일 내용', '테스트', '2021-11-08 10:00:52');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (24, '11월 24일', '24일 내용', '테스트', '2021-11-08 10:00:54');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (25, '11월 25일', '25일 내용', '테스트', '2021-11-08 10:00:56');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (26, '11월 26일', '26일 내용', '테스트', '2021-11-08 10:00:57');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (27, '11월 27일', '27일 내용', '테스트', '2021-11-08 10:00:58');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (28, '11월 28일', '28일 내용', '테스트', '2021-11-08 10:00:59');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (29, '11월 29일', '29일 내용', '테스트', '2021-11-08 10:01:01');
INSERT INTO `ci4tutorial`.`board`(`id`, `title`, `content`, `writer`, `in_date`) VALUES (30, '11월 30일', '30일 내용', '테스트', '2021-11-08 10:01:02');
이전에 확인했듯이 db연결은 이렇게 합니다.
$db = db_connect(); --> db연결
$db->query('select * from board');
쿼리 바인딩
정규 쿼리 말고 쿼리 바인딩으로 사용하는 방법도 있습니다.
이 방법을 사용할 경우 쿼리 구문을 단순화하는 효과가 있고 자동으로 이스케이프 되어 안전한 쿼리를 생성합니다.
$sql = "SELECT * FROM board WHERE id = ? AND title = ? AND writer = ?";
$db->query($sql, [3, '11월 3일', '테스트']);
쿼리 결과 실행
코드이그나이터 4에서 쿼리 결과 실행이 변경된 부분이 있습니다.
코드이그나이터 3
$query = $db->query('select * from board');
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->content;
echo $row->write;
}
º result_array()
º row()
º row_array()
코드이그나이터 4
$query = $db->query('select * from board');
foreach ($query->getResult() as $row) {
echo $row->title;
echo $row->name;
echo $row->body;
}
º getResultArray()
º getRow()
º getRowArray()
대충 first_row() --> getFirstRow() 이런 식으로 변경됐습니다.
이 부분 이외에 변경된 부분이 많이 있습니다.
감사합니다.