CI 묻고 답하기

제목 안녕하세요 초초초보가 질문드립니다.
글쓴이 trace 작성시각 2016/07/02 19:48:58
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 16718   RSS

먼저 클릭 해주셔서 감사합니다.

만들면서 배우는 codeigniter를 보면서 사이트 제작 중입니다.

 

Trying to get property of non-object 라는 에러가 떠서 진행이 안되서 도움을 부탁드립니다.

 

먼저 model 입니다.

 

 

controller 입니다.

model_ biglist 를 통해서 id와 division을 가져오고 그 값을 $data에 입력하고 그중 id값을 $id값으로 지정하고 싶은데

무엇을 잘못한걸까요 ㅠㅠ

 다음글 안드로이드 윈도폰 ios 등으로 메세지보내는 (1)
 이전글 codeigniter captcha helper (1)

댓글

바보돌쇠 / 2016/07/02 20:44:27 / 추천 0

"비 객체에서 프로퍼티를 얻으려고 시도를 합니다." 에러 메시지에 주목하세요.

 

trace / 2016/07/02 21:05:16 / 추천 0
바보돌쇠// 저기서 data-> id 가 비객체라는 뜻일까요?
배강민 / 2016/07/03 15:13:53 / 추천 0

http://cikorea.net/user_guide_2.1.0/database/results.html

쿼리결과 생성(Generating Query Results)

쿼리 결과를 생성하는데는 몇가지 방법이 있습니다:

result()

이 함수는 쿼리결과를 객체배열(an array of objects)로 리턴합니다. 실패시에는 빈 배열을 리턴하죠. 일반적으로 foreach 루프에서 이 함수를 사용할거예요 .다음 예를 보시죠:

$query = $this->db->query("YOUR QUERY");

foreach ($query->result() as $row)
{
   echo $row->title;
   echo $row->name;
   echo $row->body;
}

위 함수는 result_object() 함수의 별명(alias) 입니다.

만약 결과가 없을 수도 있는 쿼리를 수행한다면 아래와 같이 테스트를 먼저 해 보시는것이 좋습니다:

$query = $this->db->query("YOUR QUERY");

if ($query->num_rows() > 0)
{
   foreach ($query->result() as $row)
   {
      echo $row->title;
      echo $row->name;
      echo $row->body;
   }
}

각각의 결과를 객체화 할 수 있도록 클래스 이름을 result() 메서드에 문자열로 넘겨 줄 수 있습니다. (주의:클래스는 미리 로드되어 있어야 합니다)

$query = $this->db->query("SELECT * FROM users;");

foreach ($query->result('User') as $row)
{
   echo $row->name; // call attributes
   echo $row->reverse_name(); // or methods defined on the 'User' class
}

result_array()

이함수는 쿼리수행의 결과로 순수한 배열을 리턴합니다. 결과가 없다면 빈 배열을 리턴합니다. 일반적으로 아래와같은 foreach 루프에서 사용합니다.:

$query = $this->db->query("YOUR QUERY");

foreach ($query->result_array() as $row)
{
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}

배강민 / 2016/07/03 15:17:25 / 추천 0
위 result() vs. result_array() 의 각각의 echo 부분을 보시죠
trace / 2016/07/04 00:03:09 / 추천 0
봐도 모르겠어요 ㅠㅠ 이틀동안 여기서 진척이 안나가네요 ㅠㅠ
trace / 2016/07/04 00:48:10 / 추천 0
그냥 if 구문 써서 해결했습니다
배강민 / 2016/07/04 07:50:15 / 추천 0

result() =====> 객체 =====> $data->id;

result_array() =====> 배열 =====> $data['id'];

배열을 뱉는 함수를 사용하시고서는 객체로 사용하셨잖아요.