CI 묻고 답하기

제목 mysql insert 시에 변수에 값이 없을 때 에러
글쓴이 박쥐 작성시각 2014/10/22 15:20:16
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 16644   RSS
MySQL INSERT 시에

VALUES ($a, $b, $c) 이런식으로 변수를 넣었습니다.

근데 변수가 할 당 되지 않을 경우

------------------------------------------------------------------------------------
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' '', '', 90, 'N', 'master')' at line 3

insert into account (dobNo, accName, hp, email, busiCode, postcode, address, ratio, state, addEmployee) values (1, '�씤�꽣�뙆�겕', '', '', , '', '', 90, 'N', 'master')
------------------------------------------------------------------------------------

이렇게 위와 같은 에러가 뜹니다.

Mysql 스키마 정보와 해당 소스코드를 첨부하였습니다.

변수가 할 당되지 않으면 그냥 자동으로 NULL값이 들어갈 수 있을까요?

 
 function add() {

  $dobNo = $this->input->post('dobNo');
  $accName = $this->input->post('accName');
  $hp = $this->input->post('hp');
  $email = $this->input->post('email');
  $busiCode = $this->input->post('busiCode');
  $postcode = $this->input->post('postcode');
  $address = $this->input->post('address');
  $ratio = $this->input->post('ratio');
  $state = $this->input->post('state');
  $userId = $this->session->userdata('userId');

  $this->db->query("insert into account 
   (dobNo, accName, hp, email, busiCode, postcode, address, ratio, state, addEmployee) values 
   (".$dobNo.", '".$accName."', '".$hp."', '".$email."', ".$busiCode.", '".$postcode."', '".$address."', ".$ratio.", '".$state."', '".$userId."')");
 }


 
 다음글 장바구니 관련 질문입니다. (5)
 이전글 foreach문.. 라디오버튼 피드백좀 부탁드립니다 꾸... (6)

댓글

아싸리비아 / 2014/10/22 15:32:07 / 추천 0
$busiCode 값이 없어
insert 문 중 , ,  와 같이 들어가는 문제가 발생됩니다.

query 날리기전
if(!isset($busiCode)) 
   $busiCode = 0; // or null;

와 같이 초기화 해주시는게 좋을걸로 보여집니다.
박쥐 / 2014/10/22 15:41:33 / 추천 0
값이 없을 경우 초기화를 해주면 해결이 되겠네요...

다른 방법은 없는 것이죠? 일일이 초기화 하기가 귀찮은 작업이라서요...

답변 감사드립니다.
아싸리비아 / 2014/10/22 15:47:41 / 추천 0
방법은 여러가지가 존재할수 있습니다만..
원하시는걸 하실려면 전체 코드를 다 뜯어고치셔야 할듯 보입니다.

query를 라이브러리단으로 넘겨서 초기화 및 쿼리 생성 기능이 필요할듯 보이며,
현재 로직이 아닌 액티브레코드 방식으로 고치는 등 방법이 많아보이지만 비추드립니다.

현재 코드에서 쉽게 처리 할수 있는 방법은 초기화 하는 방법으로 보이며,
초기화 같은경우는 좋은 습관이니 귀찮으시더라도 꼭 하시는게 좋아보입니다.
 
박쥐 / 2014/10/22 15:54:30 / 추천 0
답변 감사합니다. 초기화 하도록 하겠습니다 ^^ 좋은하루되세요`
kaido / 2014/10/22 20:59:51 / 추천 0
초기화 말고 다른 방법으로는 미리 밴틱을 감아 두거나, 액티브레코드를 이용하시면 됩니다.

후자의 경우가 보안상 더 좋습니다.