쿼리 결과 생성

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

Result Arrays

getResult()

이 함수는 쿼리 결과를 객체(object) 배열로 리턴합니다. 실패시에는 빈 배열을 리턴합니다.

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

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

getResultArray()

이 함수는 쿼리수행의 결과로 순수한 배열을 리턴합니다. 결과가 없다면 빈 배열을 리턴합니다.

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

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

Result Rows

getRow()

이 함수는 한 줄(a single row)의 결과만을 리턴합니다. 만약 쿼리가 한 줄이상의 결과셋을 리턴하는 상황이라면 맨 첫 번째 줄만 리턴합니다. 결과는 객체(object)로 리턴됩니다

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

if ($query->num_rows() > 0)
{
        $row = $query->getRow();

        echo $row->title;
        echo $row->name;
        echo $row->body;
}

만약 특정열의 결과를 리턴받고싶다면, 첫 번째 파라미터에 열번호를 넘겨주세요

$row = $query->getRow(5);

getRowArray()

위 row() 함수와 동일하나 이 함수는 객체가 아닌 배열의 형태로 결과를 리턴합니다

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

if ($query->num_rows() > 0)
{
        $row = $query->getRowArray();

        echo $row['title'];
        echo $row['name'];
        echo $row['body'];
}

만약 특정열의 결과를 리턴받고싶다면, 첫 번째 파라미터에 열번호를 넘겨주세요

$row = $query->getRowArray(5);

주석

위의 모든 방법은 전체 결과를 메모리에 로드합니다. 큰 결과 셋의 진행을 위해 getUnbufferedRow() 를 사용하세요.

getUnbufferedRow()

이 함수는 메모리에 있는 전체 결과를 메모리에 로드하지 않고, getRow() 가 하는 것처럼, 한 줄의 결과를 반환합니다. 쿼리가 한 줄 이상이라면, 현재 row 를 반환하고, 다음 결과로 포인트가 이동합니다.

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

while ($row = $query->getUnbufferedRow())
{
        echo $row->title;
        echo $row->name;
        echo $row->body;
}

반환값의 유형을 지정하기 위한 ‘object’(기본)나 ‘array’를 지정할 수 있습니다.

$query->getUnbufferedRow();               // object
$query->getUnbufferedRow('object');       // object
$query->getUnbufferedRow('array');        // associative array

결과 헬퍼 함수

num_rows()

쿼리 결과열의 개수를 리턴합니다

$query = $this->qb->query('SELECT * FROM my_table');

echo $query->num_rows();

freeResult()

이 함수는 쿼리 결과객체에 할당된 메모리를 비우고 객체 및 리소스 아이디를 제거합니다. 보통 PHP는 스크립트 실행이 완료되면 자동으로 메모리를 해제하지만, 한 스크립트내에서 다수의 쿼리를 실행할 경우 각 리소스를 스크립트가 완료되기전에 해제해야할 때도 있습니다. 메모리를 너무 많이 소모하게 되면, 프로그램이 정지할 수도 있으니까요 . 이 함수는 아래와 같이 사용합니다.

$query = $this->qb->exec('SELECT title FROM my_table');

foreach ($query->getResult() as $row)
{
        echo $row->title;
}

$query->freeResult();  // The $query result object will no longer be available

$query2 = $this->qb->query('SELECT name FROM some_table');

$row = $query2->getRow();
echo $row->name;
$query2->freeResult(); // The $query2 result object will no longer be available