TIP게시판

제목 CI 2.1.0 버전업후 field_data() 문제
글쓴이 양승현 작성시각 2015/09/04 16:03:45
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 11611   RSS
기존에 잘 사용하던 field_data() 가 사용이 안되어 수정하였습니다.
field_data() 함수는 디비 쿼리 결과에 대한 각 필드별 타입 및 기타 정보를 가져오는 함수 입니다.
/system/databases/drivers/mysql/mysql_result.php - line 76 부터
 
 /**
  * Field data
  *
  * Generates an array of objects containing field meta-data
  *
  * @access public
  * @return array
  */
 function field_data()
 {
  $retval = array();
  /* 2015-09-04 버전업후 오류로 인한 필드데이터가 안나옴.
  while ($field = mysql_fetch_object($this->result_id))
  {
   preg_match('/([a-zA-Z]+)(\(\d+\))?/', $field->Type, $matches);

   $type = (array_key_exists(1, $matches)) ? $matches[1] : NULL;
   $length = (array_key_exists(2, $matches)) ? preg_replace('/[^\d]/', '', $matches[2]) : NULL;

   $F    = new stdClass();
   $F->name  = $field->Field;
   $F->type  = $type;
   $F->default  = $field->Default;
   $F->max_length = $length;
   $F->primary_key = ( $field->Key == 'PRI' ? 1 : 0 );

   $retval[] = $F;
  }
  */
  
  /* 임의 수정코드 */
  $data=mysql_fetch_row($this->result_id); 
  
  if(!$data) return $data; // end of data 
  $index=0; 
  while($index < mysql_num_fields($this->result_id)) 
  { 
   $meta=mysql_fetch_field($this->result_id, $index); 
   if(!$meta) 
   { 
    $retval[] = $index; 
   } 
   else 
   {
    $retval[] = $meta;
   } 
   $index++; 
  }
  
  return $retval;
 }

 // --------------------------------------------------------------------
 다음글 CI 2.1.0에서 헬퍼로 사용가능한 엑셀출력 (기존 ... (1)
 이전글 IIS 서버 메모리 풀이 계속 일어날때 대처법 (1)

댓글

한대승(불의회상) / 2015/09/07 11:12:56 / 추천 0
좋은 정보 감사 합니다.
최근 field_data() 사용 할 일이 거의 없어 알지 못했는데 그런 버그가 있었군요.

코어를 수정하기 뭐 하거나 컬럼별 주석이 필요한 경우엔 아래 URL을 참고 하세요.
http://cikorea.net/source/view/804/page/1/