TIP게시판

제목 sqlite3_driver.php에 list_fields() 추가하기
글쓴이 letsgolee 작성시각 2014/07/19 09:21:33
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 10671   RSS
Codeigniter 3.0을 사용하면서 mysql로 작업하던 것을 sqlite3로 옮겨올 때 함수 처리가 문제가 되더라구요. 예를 든다면 Tank_Auth에서 Unix_timestamp()함수를 쓰는데 sqlite3에는 이게 지원되지 않습니다. 그래서 파일을 수정해서 strftime('%s', field_name)이런 식으로 지원되게 하는 방향으로 했는데 또 에러가 나서 로그를 보니 list_fields를 쓰는 곳에서 에러가 납니다. 소스를 뜯어보니 sqlite3에서는 _list_columns() 결과가 false가 되어 list_fields가 지원이 안되는 겁니다. 문제는 field_data()는 지원되면서... 그래서 이 함수를 이용해 list_fields()를 만들어 보았습니다.

이 함수를 sqlite3_driver.php 안에 넣어주시면 됩니다.
 
	/**
	 * Fetch Field Names
	 *
	 * @param	string	the table name
	 * @return	array
	 */
	public function list_fields($table = '')
	{
		// Is there a cached result?
		if (isset($this->data_cache['field_names'][$table]))
		{
			return $this->data_cache['field_names'][$table];
		}

		if ($table === '')
		{
			return ($this->db_debug) ? $this->display_error('db_field_param_missing') : FALSE;
		}

		$result = $this->field_data($table);
		$this->data_cache['field_names'][$table] = array();

		foreach ($result as $row)
		{
			$this->data_cache['field_names'][$table][] = $row->name;
		}

		return $this->data_cache['field_names'][$table];
	}
 다음글 view를 이용한 테마기능 구현 (1)
 이전글 아이피 주소로 위치정보를... (3)

댓글

변종원(웅파) / 2014/07/21 10:07:58 / 추천 0
팁 감사합니다. ^^
한대승(불의회상) / 2014/07/21 13:38:53 / 추천 0
좋은 정보 감사 합니다.