CI 묻고 답하기

제목 [에러] Array to string conversion
글쓴이 헛발이 작성시각 2013/10/08 20:10:42
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 30138   RSS
        $test = array(
           array(
              'id' => '2' ,
              'set_new' => '1' ,
              'set_today' => '1' ,
              'set_now' => '1'
           ),
           array(
              'id' => '3' ,
              'set_new' => '1' ,
              'set_today' => '1' ,
              'set_now' => '1'
           )
        );

        return $this->db->update_batch($this->mytbl, $test, 'id');
이런걸 연습하고 있는데요..
아래와 같이 자꾸 에러가 나네요...
혹시 뭐때문에 그런지 하시나요?

A PHP Error was encountered

Severity: Notice

Message: Array to string conversion

Filename: database/DB_active_rec.php

Line Number: 1407



근데 신기한건요~
에러는 나지만 DB에 데이터는 저장이 되네요....
그래서 update_batch 문 바로 밑에다가 last_query()로 SQL문을 나오게 해서 그걸 긁어서 직접 DB에 넣어 보면 문제없이 잘 실행 되구요~

 다음글 안드로이드 코드이그나이터 session 유지 (4)
 이전글 웹서버와 이미지서버가 다를 때 이미지 업로드 문제 (6)

댓글

letsgolee / 2013/10/08 22:54:54 / 추천 0
database/DB_active_rec.php의 1407라인을 보면 $not[] = $k2.'-'.$v2; 이라 되어 있는데 여기서 $not가 array로 미리 정의되어 있지 않기 때문에 문제가 발생하는 것 같네요. 해당 함수의 $key = $this->_object_to_array_batch($key); 라고 되어 있는 부분 아래에 $not = array(); 라고 적어주시면 됩니다.

원인은 C 언어에서 스트링은 char의 배열로 되기 때문에 $not[]은 스트링을 의미할 수도 있습니다. php 역시 스트링도 동일하게 적용되는데 $str = 'abcd';라고 한다면 echo $str[0]; 하면 화면에 'a'를 프린트합니다. 

위의 경고는 array로 여겨진 변수가 스트링으로 여겨져 변환을 시도하려하기 때문에 나타난다고 볼 수 있습니다. 따라서 $not을 array()로 정의하면 경고가 사라질 겁니다. 
헛발이 / 2013/10/10 11:51:18 / 추천 0
 letsgolee님 감사합니다.
많은 도움이 되었습니다.
쌈닭 / 2014/03/24 11:58:22 / 추천 0
 http://stackoverflow.com/questions/11279262/update-database-field-error-codeigniter/12910038#12910038

문제가 되는 라인을 아래처럼 고쳐야 되더군요...

$not[] = $k.'-'.$v;

$not[] = $k2.'-'.$v2;