제목 | query() 실행 시 추가로 명시 하지 않은 NOT NULL 컬럼에도 자동으로 컬럼 타입에 맞게 값이 입력 이 됩니다. | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 라파엘 | 작성시각 | 2021/08/08 16:29:40 |
|
|||
안녕하세요. 코드이그나이트 3 버전으로 공부를 하고 있습니다. mySql 8.0 에서 아래와 같이 테이블 생성 후 CREATE TABLE tb_day_info ( day_idx bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '일련번호', code varchar(10) NOT NULL COMMENT '코드', code_title varchar(100) NOT NULL COMMENT '코드 명 ', start_day varchar(20) NOT NULL COMMENT '시작 날짜', end_day varchar(20) NOT NULL COMMENT '종료 날짜', create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '등록일', update_time datetime DEFAULT NULL COMMENT '수정일', PRIMARY KEY (day_idx), KEY tb_day_info_code (code) ) COMMENT='휴일정보테이블' $sql = " insert into tb_day_info set code = 'HO' " ; $this -> db -> query($sql) 실행 시 추가로 명시 하지 않은 NOT NULL 컬럼에도 자동으로 컬럼 타입에 맞게 값이 입력 이 됩니다. NOT NULL 에러가 발생 하지 않습니다. NOT NULL 에러를 발생 하게 하거나 체크 가능한 방법이 있을까요? 코드이그나이터 한글. 메뉴얼 관련 내용을 찾아 보았으나 아래 내용 이 관련 있는 내용인가요? 설정 파일에서 액티브레코드 비활성화는 아래 부분을 FALSE 처리 해야 하는 것가요? $query_builder = TRUE; 데이터베이스 설정파일에서 액티브레코드를 비활성(disable)화 시킬수 있습니다. 경험적인 부분이나, 조언 부탁드립니다. 고맙습니다.
|
|||
다음글 | ci3 에서 콜렉션 어떻게 사용 하나요? (4) | ||
이전글 | CI4 폴더이름변경 관련 질문드립니다. (4) | ||
변종원(웅파)
/
2021/08/09 08:22:11 /
추천
0
|
변종원(웅파)
/
2021/08/09 08:34:10 /
추천
0
입력값은 프로그램에서 제어를 해야합니다. 컨트롤러에서 모델에서 입력에 필요한 값이 있는지 먼저 체크하고 모델에서 그 데이터를 기준으로 입력 array를 만듭니다. 전송된 POST 값을 체크 없이 모델에 직접 입력하는 것은 보안상 취약합니다. 그래서 폼 검증과 보안체크를 하고 입력문을 만들어서 입력하는게 좋습니다. $lsArr = [ 'productId' => $data['productId'], //컨트롤러에서 받은 데이터 'version' => $versionInfo['version'], //db에서 조회한 데이터 'userNo' => $data['userNo'], 'isTrial' => $data['isTrial'], 'periodCode' => $pd, //컨트롤러에서 받은 데이터로 가공한 데이터 'limitCount' => $data['limitCount'], 'regDate' => $date //모델에서 선언한 날짜 ]; $this->db->insert('lise', $lsArr);
|
라파엘
/
2021/08/09 10:06:50 /
추천
0
무지에 대한 웅파님 답변
감사하고 고맙습니다.
|
링크 확인하세요. ci의 문제가 아닙니다.
http://tcpschool.com/mysql/mysql_constraint_notNull
"NOT NULL 제약 조건이란 해당 필드에 NULL 값을 저장할 수 없도록 설정하는 것으로, 해당 필드를 생략하지 못하도록 하는 제약 조건은 아닙니다.
따라서 INSERT 문으로 레코드를 저장할 때 NOT NULL 제약 조건이 설정된 필드의 값을 생략할 수도 있습니다."