제목 | 안녕하세요 CI 에서 DB 처리중에... | ||
---|---|---|---|
글쓴이 | 광복절 | 작성시각 | 2011/07/15 11:20:46 |
|
|||
안녕하세요. CI 초보 입니다. 처음에 메뉴얼을 보고 어리둥절했는대 자꾸 들여다 보니 메뉴얼이 참 좋은 지침서 같군요 다름이 아니라 MYSQL 중 컬럼에 NOT NULL default '' ; 와 같은 컬럼에 데이터를 입력하는 중입니다. 기존 PHP 작성시에는 해당 값이 NULL 이라도 데이터가 ''(빈데이터) 형태로 들어 갔었거든요 CI 로 작성하면서 "해당컬럼에는 NULL 이 될수 없다는 에러 파일이 출력 되더라구요 // 컨트롤러 $query = array( 'email' => $_POST['email'], } $this->db->insert('test', $query); ci 자체에서 제한 하는거 같은대 이런 부분은 어찌 처리 해야 되는지 궁금합니다. 그냥 인서트 전에 $email=""; 해주고 데이터 가 존재하면 다시 변수에 넣어주는 방법을 해야 할까요? 또한 $this->input->post('email') 로 넣어주면 값이 0 으로 들어가 버리드라구요. 살포시 조언 부탁드립니다. |
|||
다음글 | 웅파님 파일 첨부 했습니다 ....ㅠㅠ CI기반애플리케... (6) | ||
이전글 | 쿼리문 질문 (2) | ||
변종원(웅파)
/
2011/07/15 11:50:37 /
추천
0
|
헛발이
/
2011/07/15 12:11:56 /
추천
0
제가 직접 해 봤는데요... 빈값 들어가는데... ㅡ.ㅡ;;;
현재 디비는 CREATE TABLE IF NOT EXISTS `test` ( `name` varchar(254) NOT NULL DEFAULT '' ) ENGINE=MyISAM DEFAULT CHARSET=latin1;이렇게 되어 있는 상태이고... 광복절님의 소스를 그대로 인용해서 콘트롤러에서는 이렇게 했습니다.. class Tests extends CI_Controller { public function index() { $this->load->database(); $this->load->helper(array('form')); if ($_POST) { $query = array( 'name' => $_POST['name'], ); $this->db->insert('test', $query); } $this->load->view('test_form'); } }콘트롤러의 소스가 올바르지 않다고 생각되지만 일단 광복절님께서 하던 방식으로 해 봤습니다.. 뷰에서는 이렇게 했구요.. <?php echo form_open(); echo form_input('name'); echo form_submit(false, 'Send'); echo form_close(); ?> 그런데 결과는 이렇게 나왔습니다... 제가 문젠가요? ㅋㅋ |
광복절
/
2011/07/15 20:28:31 /
추천
0
두분 답변 너무 감사드립니다. Error Number: 1048 칼럼 'name'는 널(Null)이 되면 안됩니다. INSERT INTO `test` (`name`) VALUES (NULL) |
변종원(웅파)
/
2011/07/15 21:55:25 /
추천
0
제가 볼때는 name 필드 디폴트값이 0이 아닐까 합니다. |
광복절
/
2011/07/16 01:21:41 /
추천
0
안녕하세요
광복이 입니다. 해결 했습니다. 원인은 호스팅사의 mysql 설정이 너무 STRICT 하게 잡혀서 그런거라고 답변을 받았습니다. 무슨예기인지 잘몰라서 "예" 그랬군요 라고 끄덕일뿐이라서 mysql 설정이 서버에 따로 있나요? 일반 유저는 접근하여 수정할수 없다고 하고 SSH루트만 된다고 하는 어려운말만 ;; 웅파님 헛발님 너무 감사드립니다. 즐거운 밤 보내세요 |
다리펙토리
/
2011/07/29 17:51:45 /
추천
0
궁금한게...하나 있는데요 |
변종원(웅파)
/
2011/07/29 17:58:24 /
추천
0
개념은 모델에서 처리하는게 맞습니다만 익숙하지않거나 급할때는 컨트롤러에서 처리하기도 합니다. Ci는 느슨한 구조입니다. ^^
|
php의 편한 점이기는 하나 사용할 변수는 미리 선언하여 값을 주는 것이 좋습니다.
인서트 전에 빈값으로 선언하시는 것이 좋겠네요.
그리고 되도록이면 $_POST 변수 쓰지마시기 바랍니다.
$this->input->post 쓰시게 되면 xss도 자동으로 막아줍니다.