result()
該方法執行成功返回一個對象數組,失敗則返回一個空數組。 一般情況下,我們使用下面的方法遍歷結果,代碼就像這樣:
$query = $this->db->query("要執行的 SQL");
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
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;
}
}
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
}
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'];
}
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;
}
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
$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'];
}
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();
echo $query->num_rows();
$query->num_fields()
該函數返回當前請求的字段數(列數):
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_fields();
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 將不再可用
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 將不再可用