CI生成查詢記錄集result(),row(),row_array().....


result()


 

該方法執行成功返回一個對象數組,失敗則返回一個空數組。 一般情況下,我們使用下面的方法遍歷結果,代碼就像這樣:

$query = $this->db->query("要執行的 SQL");

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

本函數的別名是 result_object()

如果當前所執行的 SQL 可能不會返回記錄集,我們可以使用如下方法進行判斷:

$query = $this->db->query("要執行的 SQL");

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

你可以傳遞一個字符串給result()函數,該字符串代表着某個類為每一個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()


 

該方法執行成功時將記錄集作為關聯數組返回。失敗時返回空數組。一般情況下,我們使用下面的方法遍歷結果,代碼就像這樣:

$query = $this->db->query("要執行的 SQL");

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


 

row()

該函數將當前請求的第一行數據作為 object 返回。這里是示例代碼:

$query = $this->db->query("要執行的 SQL");

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

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

你可以傳遞參數(參數是行的索引)以便獲得某一行的數據。比如我們要獲得第 5 行的數據:

$row = $query->row(4);

如果傳入的參數超出行索引,則返回第一行(索引為0)數據

你也可以添加一個字符串參數,它是一個類在row()函數下實例化的名字:

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

$query->row(0, 'User')
echo $row->name; // call attributes
echo $row->reverse_name(); // or methods defined on the 'User' class


 

row_array()

功能與 row() 一樣, 區別在於該函數返回的是一個數組:

$query = $this->db->query("要執行的 SQL");

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

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

你可以傳遞參數(參數是行的索引)以便獲得某一行的數據。比如我們要獲得第 5 行的數據:

$row = $query->row_array(4);

如果傳入的參數超出行索引,則返回第一行(索引為0)數據

除此以外, 我們還可以使用下面的方法通過游標的方式獲取記錄:

$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()

默認情況下他們將返回一個 object,同時你也可以傳遞參數 "array" 以便使用 array 的方式獲取數據

$row = $query->first_row('array')
$row = $query->last_row('array')
$row = $query->next_row('array')
$row = $query->previous_row('array')

結果集輔助函數


 

$query->num_rows()

該函數將會返回當前請求的行數。在本例子中, $query 表示當前 SQL 所產生的請求結果對象:

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

echo $query->num_rows();


 

$query->num_fields()

該函數返回當前請求的字段數(列數):

$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(); // $query 將不再可用

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

$row = $query2->row();
echo $row->name;
$query2->free_result(); // $query2 將不再可用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM