쿼리결과 생성(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_array()
이함수는 쿼리수행의 결과로 순수한 배열을 리턴합니다. 결과가 없다면 빈 배열을 리턴합니다. 일반적으로 아래와같은 foreach 루프에서 사용합니다.:
$query = $this->db->query("YOUR QUERY");
foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
row()
이 함수는 한줄(a single row)의 결과만을 리턴합니다. 만약 쿼리가 한줄이상의 결과셋을 리턴하는 상황이라면 맨 첫번째 줄만 리턴합니다. 결과는 객체(object) 로 리턴됩니다. 아래 샘플을 보세요:
$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
$row = $query->row();
echo $row->title;
echo $row->name;
echo $row->body;
}
만약 특정열의 결과를 리턴받고싶다면, 첫번째 파라미터에 열번호를 넘겨주세요:
$row = $query->row(5);
row_array()
위row() 함수와 동일하나 이 함수는 객체가 아닌 배열의 형태로 결과를 리턴합니다.:
$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
$row = $query->row_array();
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
만약 특정열의 결과를 리턴받고싶다면, 첫번째 파라미터에 열번호를 넘겨주세요:
$row = $query->row_array(5);
추가적으로 , 아래의 함수를 이용하여 앞/뒤/첫번째/마지막 레코드등으로 이동할수 있습니다:
$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()
기본적으로 이렇게 이동할때 함수의 결과는 객체를 리턴합니다. 만약 배열로 리턴받고싶다면 아래와같이 'array'를 파라미터로 넘겨주시면 됩니다:
$row = $query->first_row('array')
$row = $query->last_row('array')
$row = $query->next_row('array')
$row = $query->previous_row('array')
결과 헬퍼 함수들 (Result Helper Functions)
$query->num_rows()
쿼리 결과열의 개수를 리턴합니다. 아래예제에서, $query 는 쿼리결과를 받는 변수입니다:
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();
$query->num_fields()
쿼리결과의 필드(columns)개수를 리턴합니다. 아래와 같이 쿼리 결과를 담은 객체에서 이함수를 호출해야한다는것을 명심하세요:
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_fields();
$query->free_result()
이함수는 쿼리결과객체에 할당된 메모리를 비우고 객체 및 리소스 아이디를 제거합니다. 보통 PHP는 스크립트 실행이 완료되면 자동으로 메모리를 해제하나 , 한 스크립트내에서 다수의 쿼리를 실행할경우 각 리소스를 스크립트가 완료되기전에 해제해야할 때도 있습니다. 메모리를 너무 많이 소모하게되면, 프로그램이 정지할수도 있으니까요 . 이함수는 아래와 같이 사용합니다:
$query = $this->db->query('SELECT title FROM my_table');
foreach ($query->result() as $row)
{
echo $row->title;
}
$query->free_result(); // The $query result object will no longer be available
$query2 = $this->db->query('SELECT name FROM some_table');
$row = $query2->row();
echo $row->name;
$query2->free_result(); // The $query2 result object will no longer be available