?
This document uses PHP Chinese website manual Release
有幾種方法可以生成查詢結(jié)果:
結(jié)果數(shù)組
結(jié)果行
自定義結(jié)果對象
結(jié)果幫助法
類引用
結(jié)果()
方法將查詢結(jié)果作為對象,或空數(shù)組在失敗的時候。通常,您將在foreach循環(huán)中使用此方法,如下所示:
$query = $this->db->query("YOUR QUERY");foreach ($query->result() as $row){ echo $row->title; echo $row->name; echo $row->body;}
上面的方法是result_object()
...
您還可以傳遞一個字符串,result()
該字符串表示要為每個結(jié)果對象實例化的類(請注意:必須加載此類)
$query = $this->db->query("SELECT * FROM users;");foreach ($query->result('User') as $user){ echo $user->name; // access attributes echo $user->reverse_name(); // or methods defined on the 'User' class}
result_array()
此方法將查詢結(jié)果作為純數(shù)組返回,或在未產(chǎn)生結(jié)果時返回空數(shù)組。通常你會在foreach循環(huán)中使用它,如下所示:
$query = $this->db->query("YOUR QUERY");foreach ($query->result_array() as $row){ echo $row['title']; echo $row['name']; echo $row['body'];}
行()
此方法返回單個結(jié)果行。如果查詢有多行,則只返回第一行。結(jié)果作為對象這里有一個用法示例:
$query = $this->db->query("YOUR QUERY");$row = $query->row();if (isset($row)){ echo $row->title; echo $row->name; echo $row->body;}
如果希望返回特定行,可以在第一個參數(shù)中以數(shù)字形式提交行號:
$row = $query->row(5);
還可以添加第二個字符串參數(shù),該參數(shù)是要實例化行的類的名稱:
$query = $this->db->query("SELECT * FROM users LIMIT 1;"); $row = $query->row(0, 'User'); echo $row->name; // access attributesecho $row->reverse_name(); // or methods defined on the 'User' class
row_array()
與上述相同row()
方法,但它返回一個數(shù)組。例子:
$query = $this->db->query("YOUR QUERY");$row = $query->row_array();if (isset($row)){ echo $row['title']; echo $row['name']; echo $row['body'];}
如果希望返回特定行,可以在第一個參數(shù)中以數(shù)字形式提交行號:
$row = $query->row_array(5);
另外,您可以使用以下變體,通過結(jié)果前進/后退/前進/后退:
默認情況下,它們返回一個對象,除非您在參數(shù)中添加單詞“Array”:
注
上面的所有方法都會將整個結(jié)果加載到內(nèi)存中(預?。J褂?code>unbuffered_row()用于處理大型的結(jié)果集。
unbuffered_row()
此方法返回一個結(jié)果行,而無需將內(nèi)存中的整個結(jié)果預取為row()
是的。如果查詢有多行,則返回當前行并向前移動內(nèi)部數(shù)據(jù)指針。
$query = $this->db->query("YOUR QUERY");while ($row = $query->unbuffered_row()){ echo $row->title; echo $row->name; echo $row->body;}
您可以選擇傳遞'object'(默認)或'array'來指定返回值的類型:
$query->unbuffered_row(); // object $query->unbuffered_row('object'); // object $query->unbuffered_row('array'); // associative array
可以將結(jié)果作為自定義類的實例而不是stdClass
或數(shù)組,如result()
和result_array()
方法允許。這要求類已經(jīng)加載到內(nèi)存中。對象將將從數(shù)據(jù)庫返回的所有值設(shè)置為屬性。如果已經(jīng)聲明了這些信息,并且是非公共的,那么您應(yīng)該提供一個__set()
方法以允許設(shè)置它們。
例子:
class User { public $id; public $email; public $username; protected $last_login; public function last_login($format) { return $this->last_login->format($format); } public function __set($name, $value) { if ($name === 'last_login'){ $this->last_login = DateTime::createFromFormat('U', $value); } } public function __get($name) { if (isset($this->$name)){ return $this->$name; } } }
除了下面列出的兩個方法之外,下列方法還可以以類名返回結(jié)果:first_row()
,,,last_row()
,,,next_row()
,和previous_row()
...
custom_result_object()
將整個結(jié)果集作為請求類的實例數(shù)組返回。唯一的參數(shù)是要實例化的類的名稱。
例子:
$query = $this->db->query("YOUR QUERY");$rows = $query->custom_result_object('User');foreach ($rows as $row){ echo $row->id; echo $row->email; echo $row->last_login('Y-m-d');}
custom_row_object()
從查詢結(jié)果中返回一行。第一個參數(shù)是結(jié)果的行號。第二個參數(shù)是要實例化的類名。
例子:
$query = $this->db->query("YOUR QUERY");$row = $query->custom_row_object(0, 'User');if (isset($row)){ echo $row->email; // access attributes echo $row->last_login('Y-m-d'); // access class methods}
您還可以使用row()
方法完全相同。
例子:
$row = $query->custom_row_object(0, 'User');
NUM_ROWS()
查詢返回的行數(shù)。注意:在本例中,$query是指定查詢結(jié)果對象的變量:
$query = $this->db->query('SELECT * FROM my_table');echo $query->num_rows();
注
并非所有數(shù)據(jù)庫驅(qū)動程序都有獲取結(jié)果集總行數(shù)的原生方法。在這種情況下,所有數(shù)據(jù)都會被預取,并且count()
對結(jié)果數(shù)組進行手動調(diào)用,以獲得相同的結(jié)果。
NUM_FIELDS()
查詢返回的FIELDS(列)的數(shù)量。確保使用查詢結(jié)果對象調(diào)用該方法:
$query = $this->db->query('SELECT * FROM my_table');echo $query->num_fields();
free_result()
它釋放與結(jié)果關(guān)聯(lián)的內(nèi)存,并刪除結(jié)果資源ID。通常,PHP在腳本執(zhí)行結(jié)束時會自動釋放其內(nèi)存。但是,如果在特定腳本中運行大量查詢,則可能希望在生成每個查詢結(jié)果后釋放結(jié)果,以減少內(nèi)存消耗。
例子:
$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
data_seek()
此方法設(shè)置要獲取的下一個結(jié)果行的內(nèi)部指針。它只有結(jié)合使用時才有用。unbuffered_row()
...
它接受一個正整數(shù)值,默認值為0,如果成功返回true,失敗時返回false。
$query = $this->db->query('SELECT `field_name` FROM `table_name`'); $query->data_seek(5); // Skip the first 5 rows $row = $query->unbuffered_row();
注
并非所有數(shù)據(jù)庫驅(qū)動程序都支持此功能,并將返回false。最值得注意的是-你將無法使用它與PDO。
class CI_DB_resultresult([$type = 'object'])
參數(shù): | $ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名 |
---|---|
返回: | 包含提取的行的數(shù)組 |
返回類型: | 排列 |
$ type(string) - 所請求結(jié)果的類型 - 數(shù)組,對象或類名返回:包含獲取行的數(shù)組返回類型:數(shù)組包和result_array()
,result_object()
和custom_result_object()
方法。用法:查看結(jié)果數(shù)組。result_array()
返回:包含提取的rows的數(shù)組result_object()
返回類型:數(shù)組返回:包含提取的rows的數(shù)組返回類型:數(shù)組custom_result_object($class_name)
參數(shù):$ class_name(string) - 結(jié)果的類名rowsReturns:包含提取的行的數(shù)組返回類型:數(shù)組
$ class_name(string) - 結(jié)果行的類名
返回:包含提取的行的數(shù)組
返回類型:數(shù)組
以行數(shù)組形式返回查詢結(jié)果,其中每行都是指定類的實例。
row([$n = 0[, $type = 'object']])
參數(shù): | $ n(int) - 要返回的查詢結(jié)果行的索引$ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名 |
---|---|
返回: | 請求的行或NULL,如果它不存在 |
返回類型: | 雜 |
$ n(int) - 要返回的查詢結(jié)果行的索引
$ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名
返回:請求的行,如果不存在,則返回NULL
Return type: mixed
A wrapper for the `row_array()`, `row_object() and ``custom_row_object()` methods.
用法:見結(jié)果行...
unbuffered_row([$type = 'object'])
參數(shù): | $ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名 |
---|---|
返回: | 結(jié)果集中的下一行,如果不存在則為NULL |
返回類型: | 雜 |
$ type(string) - 請求的結(jié)果的類型 - 數(shù)組,對象或類名返回:結(jié)果集中的下一行或者NULL(如果不存在)返回類型:混合獲取下一個結(jié)果行并將其返回到請求中形成。用法:查看結(jié)果行。row_array([$n = 0])
參數(shù):$ n(int) - 要返回的查詢結(jié)果行的索引返回:請求的行或NULL,如果它不存在返回類型:數(shù)組
$ n(int) - 要返回的查詢結(jié)果行的索引
返回:請求的行,如果不存在,則返回NULL
返回類型:數(shù)組
以關(guān)聯(lián)數(shù)組形式返回請求的結(jié)果行。
用法:見結(jié)果行...
row_object([$n = 0])
參數(shù): | $ n(int) - 要返回的查詢結(jié)果行的索引 |
---|---|
返回: | 請求的行或NULL,如果它不存在 |
返回類型: | stdClass的 |
$ n(int) - 要返回的查詢結(jié)果行的索引返回:請求的行,如果不存在,則返回NULL返回類型:stdClass將請求的結(jié)果行作為類型對象返回stdClass
。用法:查看結(jié)果行。custom_row_object($n, $type)
參數(shù):$ n(int) - 要返回的結(jié)果行的索引$ class_name(字符串) - 結(jié)果行的類名rowReturns:所請求的行或NULL,如果不存在返回類型:$ type
$ n(int) - 要返回的結(jié)果行的索引
$ class_name(string) - 結(jié)果行的類名稱
返回:請求的行,如果不存在,則返回NULL
返回類型:$ type
將請求的結(jié)果行作為請求的類的實例返回。
data_seek([$n = 0])
參數(shù): | $ n(int) - 接下來要返回的結(jié)果行的索引 |
---|---|
返回: | 成功為TRUE,失敗為FALSE |
返回類型: | 布爾 |
$ n(int) - 下一個要返回的結(jié)果行的索引返回:成功時為TRUE,失敗時為FALSE返回類型:bool將內(nèi)部結(jié)果行指針移動到所需偏移量。用法:請參閱結(jié)果助手方法。set_row($key[, $value = NULL])
參數(shù):$ key(mixed) - 列名或鍵/值對的數(shù)組$ value(mixed) - 要分配給列的值,$ key是單個字段名稱返回類型:void
$ key(mixed) - 列名或鍵/值對的數(shù)組
$ value(mixed) - 要分配給列的值,$ key是單個字段名稱
Return type: void
將值分配給特定的列。
next_row([$type = 'object'])
參數(shù): | $ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名 |
---|---|
返回: | 結(jié)果集的下一行,如果不存在,則為NULL |
返回類型: | 雜 |
$ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名返回:結(jié)果集的下一行;如果不存在,則返回NULL返回類型:混合返回結(jié)果集中的下一行。previous_row([$type = 'object'])
參數(shù):$ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類nameReturns:結(jié)果集的上一行,如果不存在則返回NULL返回類型:混合
$ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名
返回:結(jié)果集的上一行,如果不存在則返回NULL
Return type: mixed
返回結(jié)果集中的前一行。
first_row([$type = 'object'])
參數(shù): | $ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名 |
---|---|
返回: | 結(jié)果集的第一行,如果不存在則為NULL |
返回類型: | 雜 |
$ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名返回:結(jié)果集的第一行,如果不存在,則返回NULL返回類型:混合返回結(jié)果集中的第一行。last_row([$type = 'object'])
參數(shù):$ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類nameReturns:結(jié)果集的最后一行,如果不存在則返回NULL返回類型:混合
$ type(string) - 請求結(jié)果的類型 - 數(shù)組,對象或類名
返回:結(jié)果集的最后一行,如果不存在,則返回NULL
Return type: mixed
返回結(jié)果集中的最后一行。
num_rows()
返回: | 結(jié)果集中的行數(shù) |
---|---|
返回類型: | INT |
num_fields()
返回: | 結(jié)果集中的字段數(shù) |
---|---|
返回類型: | INT |
field_data()
返回: | 包含字段元數(shù)據(jù)的數(shù)組 |
---|---|
返回類型: | 排列 |
free_result()
Return type: | void |
---|
list_fields()
返回: | 列名稱數(shù)組 |
---|---|
返回類型: | 排列 |