CI 묻고 답하기

제목 데이터베이스 함수 질문입니다.
글쓴이 수야디벨 작성시각 2012/10/24 10:29:04
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 16120   RSS

테이블을 아래와 같이 생성하였습니다.

index  int  NOT NULL auto-increment
id    varchar(255)
contents text


그러면 이 데이터베이스에 값을 넣어야 하잖아요?

보통 완전하게 1:1 매칭으로 갑을 넣기위해서 (저는 폼에서 그 값을 받아옵니다)

$data 배열을 하나 만들어서

$data = array(
      'userindxe' => $_POST['userindex'],
      'userid' => $_POST['userid],
      'usertext' => $_POST['usertext'],
);
$this->db->insert('테이블이름', 데이터배열);

로 해주면 1:1매칭되서 들어가는건 알고 있는데요 ~

제가 궁금한건,

index의 값이 auto increment이기 때문에 값을 입력하지 않아도
저절로 값이 부여 될텐데,

어떻게 null 값을 전달해서 입력하냐..입니다.


그냥 sql cms창에서는 이렇게 하면 끝나는데 말이지요..
(insert into 테이블이름(index,id,contents) values(NULL,'1','2');



배열을 ..

$data = array(
 NULL,    
'userid' => $_POST['userid],
'usertext' => $_POST['usertext'],
);

이렇게 null 값을 전달하게 고정하면 될까요?(문법은 맞는건가요?)


너무 궁금합니다!
 다음글 kohana와 ci간의 세션공유문제입니다. (12)
 이전글 쿼리 질문입니다. (2)

댓글

한대승(불의회상) / 2012/10/24 10:50:41 / 추천 0
정답이긴 한데...

이것 저것 귀찮아서..

$data = array(
'userid' => $this->input->post('userid'),
'usertext' => $this->input->post('usertext')
);
이렇게 사용하고 있습니다.

참고로 $_POST 보다는 $this->input->post()를 사용하시는게 좋습니다.

헛발이 / 2012/10/24 11:55:52 / 추천 0
코드이그나이터가 빠르고 유연한 프레임워크임에 틀림없긴 하지만 최소한의 프레임워크로서의 기본적인 룰이 있답니다.. 그 룰이란것이 꼭 지켜져야 하는것만은 아니라고 생각합니다만.. 프레임워크를 사용하는 목적으로 코드의 재활용 또는 유지보수의 편리함을 주기위해 가능하면 기본적인 룰을 지켜 나가는것이 올바르다고 생각이 개인적으로 듭니다..

view에서 POST로 값을 받아 모든 POST값을 배열에 넣고 DB에 저장을 하는것은 프레임워크를 사용하지 않거나 사용하거나를 떠나 모두의 목적이라고 생각할 수 있죠..

하지만 POST값을 그냥 순수하게 DB에 저장을 하면 안되다고 생각합니다.
입력하는 사람을 믿기는 하지만 꼭 믿을 순 없거든요..

입력한 값이 올바른지 문제는 없는지 잘못입력했는지 검증을 해 줘야 합니다.
그 부분이 코드이그나이터의 메뉴얼에 나와 있답니다..

http://cikorea.net/user_guide_2.1.0/libraries/form_validation.html

즉 최소한의 규칙을 나열 하면...

1. view에서 POST로 폼을 만들어 값을 넘긴다..
2. 콘트롤에서 그 값을 받아 폼검증을 한다.
3. 검증에서 에라가 나면 다시 view로 보내 에라를 출력한다.
4. 검증이 완료되면 값을 가지고 모델로 이동한다.
    (혹은 라이브러리로 이동시켜 폼검증 이외의 다른 검증도 한후 모델로 값을 넘겨준다)
5. 모델에서 보내진 값 배열을 이용하여 DB에 저장한다.
6. 모든 것을 마치고 콘트롤로 빠져나와 원하는 곳으로 이동한다..

이런 흐름으로 가시는것이 좋다고 생각합니다.
즉 콘트롤에서 이렇게 하는게 좋을듯 싶긴 합니다만....
$this->form_validation->set_rules('userid', 'userid', 'trim|required|xss_clean');
$this->form_validation->set_rules('usertxt', 'usertxt', 'trim|required|xss_clean');

if ($this->form_validation->run())
{
    $post = array(
        'userid' => $this->form_validation->set_value('userid'),
        'usertxt' => $this->form_validation->set_value('usertxt'),
        );
    if (!is_null($this->user_model->regist($post))) {
        redirect(base_url());
    }
}

...
...
한대승(불의회상) / 2012/10/24 12:51:24 / 추천 0
헛발이님께 '좋아요' 100만개 보내드립니다. ^^
헛발이 / 2012/10/24 13:52:06 / 추천 0
ㅋㅋ ★말씀을요~
milosz / 2012/10/24 15:29:57 / 추천 0
 그리고 참견하자면 이 모든게 메뉴얼에 나와있습니다 ;ㅅ;
수야디벨 / 2012/10/24 16:04:46 / 추천 0

정말 너무너무 감사합니다^^^^^

양승현 / 2012/10/24 16:58:29 / 추천 0
헛발이님께 박수를.. 하지만 전 그냥 집어 넣는다죠? 손가락 힘들어유 ㅜ.ㅜ
헛발이 / 2012/10/24 17:17:19 / 추천 0
힘들긴유~ 다 복사 카피 하는거죠.. ㅋ