生成查詢記錄集
支持使用以下方法生成記錄集
result()
該方法執(zhí)行成功返回一個對象數(shù)組,失敗則返回一個空數(shù)組。 一般情況下,我們使用下面的方法遍歷結(jié)果,代碼就像這樣:
$query = $this->db->query("要執(zhí)行的 SQL");
foreach ($query->result() as $row)
{
???echo $row->title;
???echo $row->name;
???echo $row->body;
}
本函數(shù)的別名是 result_object()。
如果當(dāng)前所執(zhí)行的 SQL 可能不會返回記錄集,我們可以使用如下方法進行判斷:
$query = $this->db->query("要執(zhí)行的 SQL");
if ($query->num_rows() > 0)
{
???foreach ($query->result() as $row)
???{
??????echo $row->title;
??????echo $row->name;
??????echo $row->body;
???}
}
You can also pass a string to result() which represents a class to instantiate for each result object (note: this class must be loaded)
$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()
該方法執(zhí)行成功時將記錄集作為關(guān)聯(lián)數(shù)組返回。失敗時返回空數(shù)組。一般情況下,我們使用下面的方法遍歷結(jié)果,代碼就像這樣:
$query = $this->db->query("要執(zhí)行的 SQL");
foreach ($query->result_array() as $row)
{
???echo $row['title'];
???echo $row['name'];
???echo $row['body'];
}
row()
該函數(shù)將當(dāng)前請求的第一行數(shù)據(jù)作為 object 返回。這里是示例代碼:
$query = $this->db->query("要執(zhí)行的 SQL");
if ($query->num_rows() > 0)
{
???$row = $query->row();
???echo $row->title;
???echo $row->name;
???echo $row->body;
}
你可以傳遞參數(shù)(參數(shù)是行的索引)以便獲得某一行的數(shù)據(jù)。比如我們要獲得第 5 行的數(shù)據(jù):
$row = $query->row(4);
如果傳入的參數(shù)超出行索引,則返回第一行(索引為0)數(shù)據(jù)
You can also add a second String parameter, which is the name of a class to instantiate the row with:
$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() 一樣, 區(qū)別在于該函數(shù)返回的是一個數(shù)組:
$query = $this->db->query("要執(zhí)行的 SQL");
if ($query->num_rows() > 0)
{
???$row = $query->row_array();
???echo $row['title'];
???echo $row['name'];
???echo $row['body'];
}
你可以傳遞參數(shù)(參數(shù)是行的索引)以便獲得某一行的數(shù)據(jù)。比如我們要獲得第 5 行的數(shù)據(jù):
$row = $query->row_array(4);
如果傳入的參數(shù)超出行索引,則返回第一行(索引為0)數(shù)據(jù)
除此以外, 我們還可以使用下面的方法通過游標(biāo)的方式獲取記錄:
$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()
默認情況下他們將返回一個 object,同時你也可以傳遞參數(shù) "array" 以便使用 array 的方式獲取數(shù)據(jù)
$row = $query->first_row('array')
$row = $query->last_row('array')
$row = $query->next_row('array')
$row = $query->previous_row('array')
結(jié)果集輔助函數(shù)
$query->num_rows()
該函數(shù)將會返回當(dāng)前請求的行數(shù)。在本例子中, $query 表示當(dāng)前 SQL 所產(chǎn)生的請求結(jié)果對象:
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();
$query->num_fields()
該函數(shù)返回當(dāng)前請求的字段數(shù)(列數(shù)):
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_fields();
$query->free_result()
該函數(shù)將會釋放當(dāng)前查詢所占用的內(nèi)存并刪除其關(guān)聯(lián)的資源標(biāo)識。通常來說,PHP 將會腳本執(zhí)行結(jié)束后自動釋放內(nèi)存。如果當(dāng)前執(zhí)行的請求將要花很長時間并且占用比較大的資源時,該函數(shù)可以在一定程度上降低資源的消耗:
$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 將不再可用
?