W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
getResult()
這個方法返回 對象數(shù)組 類型的查詢結(jié)果,或在失敗時返回 一個空數(shù)組 。 典型的用法是使用 foreach 循環(huán),像這樣:
$query = $db->query("YOUR QUERY");
foreach ($query->getResult() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
上面的方法是 getResultObject()
的別名。
如果你想返回一個二維數(shù)組,可以給第一個參數(shù)傳字符串 ‘a(chǎn)rray’
$query = $db->query("YOUR QUERY");
foreach ($query->getResult('array') as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
上面的方法是 getResultArray()
的別名。
你也可以傳字符串參數(shù)到 getResult()
方法,表示要為每個結(jié)果對象實例化的類
$query = $db->query("SELECT * FROM users;");
foreach ($query->getResult('User') as $user)
{
echo $user->name; // 獲取屬性
echo $user->reverseName(); // 或訪問 'User' 類定義的方法
}
上面的方法是 getCustomResultObject()
的別名。
getResultArray()
這個方法返回一個純數(shù)組的查詢結(jié)果,查無結(jié)果時為空數(shù)組。 典型的用法是使用 foreach 循環(huán),像這樣:
$query = $db->query("YOUR QUERY");
foreach ($query->getResultArray() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
getRow()
這個方法返回一個單行結(jié)果,如果你的查詢有多行結(jié)果,它僅返回第一條。 返回結(jié)果是一個 對象 。使用示例:
$query = $db->query("YOUR QUERY");
$row = $query->getRow();
if (isset($row))
{
echo $row->title;
echo $row->name;
echo $row->body;
}
如果你想返回指定行的結(jié)果,可以在第一個參數(shù)里提供這個數(shù)字:
$row = $query->getRow(5);
你也可以傳一個字符串到第二個參數(shù),表示該結(jié)果實例化的對象類:
$query = $db->query("SELECT * FROM users LIMIT 1;");
$row = $query->getRow(0, 'User');
echo $row->name; // 獲取屬性
echo $row->reverse_name(); // 或訪問 'User' 類定義的方法
getRowArray()
這個與上面的 row()
方法基本相同,區(qū)別是它返回的是一個數(shù)組。 示例:
$query = $db->query("YOUR QUERY");
$row = $query->getRowArray();
if (isset($row))
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
如果你想返回指定行的結(jié)果,可以在第一個參數(shù)里提供這個數(shù)字:
$row = $query->getRowArray(5);
另外,你可以用這些方法在結(jié)果集里做 前進(jìn)/后退/首行/尾行 的游標(biāo)操作:
$row = $query-&getFirstRow()
$row = $query-&getLastRow()
$row = $query-&getNextRow()
$row = $query-&getPreviousRow()
默認(rèn)他們返回一個對象,除非第一個參數(shù)是字符串 “array” 才會返回數(shù)組:
$row = $query-&getFirstRow(‘a(chǎn)rray’)
$row = $query-&getLastRow(‘a(chǎn)rray’)
$row = $query-&getNextRow(‘a(chǎn)rray’)
$row = $query-&getPreviousRow(‘a(chǎn)rray’)
注解
以上所有方法都會把整個查詢結(jié)果載入內(nèi)存(預(yù)加載)。 請使用getUnbufferedRow()
方法處理大型結(jié)果集。
getUnbufferedRow()
這個方法返回單個結(jié)果,不會像 row()
把整個結(jié)果預(yù)加載到內(nèi)存里。 如果你的查詢結(jié)果多于一個,它返回當(dāng)前行并將內(nèi)部數(shù)據(jù)指針向前移動。
$query = $db->query("YOUR QUERY");
while ($row = $query->getUnbufferedRow())
{
echo $row->title;
echo $row->name;
echo $row->body;
}
你可以選擇性的傳參 ‘object’ (默認(rèn)) 或 ‘a(chǎn)rray’ 來指定返回數(shù)據(jù)的類型:
$query->getUnbufferedRow(); // 對象
$query->getUnbufferedRow('object'); // 對象
$query->getUnbufferedRow('array'); // 關(guān)聯(lián)數(shù)組
你可以用一個自定義的類實例作為返回結(jié)果,代替原來的 stdClass
對象或數(shù)組,
getResult()
和 getResultArray()
允許如此操作。
如果該類(文件)尚未加載到內(nèi)存,自動加載器會嘗試載入它。 對象的屬性值會設(shè)置為數(shù)據(jù)庫的返回數(shù)據(jù),如果是非公開屬性, 你需要提供一個 __set()
方法以允許他們被賦予值。
示例:
class User
{
public $id;
public $email;
public $username;
protected $last_login;
public function lastLogin($format)
{
return $this->lastLogin->format($format);
}
public function __set($name, $value)
{
if ($name === 'lastLogin')
{
$this->lastLogin = DateTime::createFromFormat('U', $value);
}
}
public function __get($name)
{
if (isset($this->$name))
{
return $this->$name;
}
}
}
除了下面列出的兩個方法之外,這些方法也可以指定類名 返回類實例的結(jié)果集: getFirstRow()
, getLastRow()
, getNextRow()
和 getPreviousRow()
。
getCustomResultObject()
以要求的類實例數(shù)組的形式返回整個結(jié)果集。 唯一的參數(shù)是要實例化的類的名稱。
示例:
$query = $db->query("YOUR QUERY");
$rows = $query->getCustomResultObject('User');
foreach ($rows as $row)
{
echo $row->id;
echo $row->email;
echo $row->last_login('Y-m-d');
}
getCustomRowObject()
以要求的類實例形式返回單個結(jié)果,第一個參數(shù)是它在結(jié)果集里的序號, 第二個參數(shù)是要實例化的類的名稱。
示例:
$query = $db->query("YOUR QUERY");
$row = $query->getCustomRowObject(0, 'User');
if (isset($row))
{
echo $row->email; // 獲取屬性
echo $row->last_login('Y-m-d'); // 或訪問 'User' 類定義的方法
}
你也可以用 getRow()
方法達(dá)到相同效果。
示例:
$row = $query->getCustomRowObject(0, 'User');
getFieldCount()
返回查詢結(jié)果的字段個數(shù)(列數(shù)),確保你是使用查詢結(jié)果對象調(diào)用此方法:
$query = $db->query('SELECT * FROM my_table');
echo $query->getFieldCount();
getFieldNames()
返回查詢結(jié)果的字段名(列名)的數(shù)組,確保你是使用查詢結(jié)果對象調(diào)用此方法:
$query = $db->query('SELECT * FROM my_table');
echo $query->getFieldNames();
freeResult()
它會釋放查詢結(jié)果占用的內(nèi)存并刪除資源ID。通常 PHP 會在腳本結(jié)束時自動釋放內(nèi)存, 然而,如果你在某個腳本里執(zhí)行了很多查詢,你也許想處理完每個查詢后即刻釋放內(nèi)存, 以此減少內(nèi)存消耗。
舉例:
$query = $thisdb->query('SELECT title FROM my_table');
foreach ($query->getResult() as $row)
{
echo $row->title;
}
$query->freeResult(); // $query 的結(jié)果對象不再可用
$query2 = $db->query('SELECT name FROM some_table');
$row = $query2->getRow();
echo $row->name;
$query2->freeResult(); // $query2 的結(jié)果對象不再可用
dataSeek()
該方法設(shè)置一個內(nèi)部指針,用來獲取下一個結(jié)果行,它僅和 getUnbufferedRow()
一起使用才有作用。
它接受一個正整數(shù)值,默認(rèn)是0,返回 TRUE 表示成功,F(xiàn)ALSE 表示失敗。
$query = $db->query('SELECT `field_name` FROM `table_name`');
$query->dataSeek(5); // Skip the first 5 rows
$row = $query->getUnbufferedRow();
注解
不是所有數(shù)據(jù)庫驅(qū)動支持這個特性,(不支持的)會返回 FALSE。 最值得注意的是 - 你無法在 PDO 中使用它。
CodeIgniter\Database\BaseResult
getResult
([$type = 'object'])
參數(shù): | $type (string) – 要求的結(jié)果類型 - array, object, 或 類名 |
---|---|
返回: | 包含查詢到的行的數(shù)組 |
返回類型: | array |
它是這幾種方法的包裝: getResultArray()
, getResultObject()
和 getCustomResultObject()
。
用法: 詳見 結(jié)果數(shù)組.
getResultArray
()
返回: | 包含查詢到的行的數(shù)組 |
---|---|
返回類型: | array |
返回查詢結(jié)果行的數(shù)組,每行都是關(guān)聯(lián)數(shù)組。
用法: 詳見 結(jié)果數(shù)組.
getResultObject
()
返回: | 包含查詢到的行的數(shù)組 |
---|---|
返回類型: | array |
返回查詢結(jié)果行的數(shù)組,每行都是 stdClass
類的實例。
用法: 詳見 結(jié)果數(shù)組.
getCustomResultObject
($class_name)
參數(shù): | $class_name (string) – 結(jié)果行的類實例名 |
---|---|
返回: | 包含查詢到的行的數(shù)組 |
返回類型: | array |
返回查詢結(jié)果行的數(shù)組,每行都是指定類的實例。
getRow
([$n = 0[, $type = 'object']])
參數(shù): | $n (int) – 想要返回的結(jié)果行的序號 |
---|---|
$type (string) – 要求的結(jié)果類型 - array, object, 或 類名 | |
返回: | 要求的行數(shù)據(jù),不存在時返回 NULL |
返回類型: | mixed |
它是這幾種方法的包裝: getRowArray()
, getRowObject()
和 getCustomRowObject()
。
用法: 詳見 單行結(jié)果.
getUnbufferedRow
([$type = 'object'])
參數(shù): | $type (string) – 要求的結(jié)果類型 - array, object, 或 類名 |
---|---|
返回: | 結(jié)果集的下一行,不存在時返回 NULL |
返回類型: | mixed |
按要求的格式返回結(jié)果集的下一行。
用法: 詳見 單行結(jié)果.
getRowArray
([$n = 0])
參數(shù): | $n (int) – 想要返回的結(jié)果行的序號 |
---|---|
返回: | 要求的行數(shù)據(jù),不存在時返回 NULL |
返回類型: | array |
返回結(jié)果行,格式為關(guān)聯(lián)數(shù)組。
用法: 詳見 單行結(jié)果.
getRowObject
([$n = 0])
參數(shù): | $n (int) – 想要返回的結(jié)果行的序號 |
---|---|
返回: | 要求的行數(shù)據(jù),不存在時返回 NULL |
返回類型: | stdClass |
返回結(jié)果行,格式為 stdClass
的類實例。
用法: 詳見 單行結(jié)果.
getCustomRowObject
($n, $type)
參數(shù): | $n (int) – 想要返回的結(jié)果行的序號 |
---|---|
$class_name (string) – 結(jié)果行的類實例名 | |
返回: | 要求的行數(shù)據(jù),不存在時返回 NULL |
返回類型: | $type |
返回結(jié)果行,格式為要求的的類實例。
dataSeek
([$n = 0])
參數(shù): | $n (int) – 即將返回的結(jié)果行的序號 |
---|---|
返回: | TRUE 表示成功,F(xiàn)ALSE 表示失敗 |
返回類型: | bool |
移動結(jié)果集的內(nèi)部指針到指定位置。
用法: 詳見 結(jié)果處理輔助方法.
setRow
($key[, $value = NULL])
參數(shù): | $key (mixed) – 列名或鍵值數(shù)組 |
---|---|
$value (mixed) – 分配給列的值,$key 是單個字段名 | |
返回類型: | void |
為特定列分配值。
getNextRow
([$type = 'object'])
參數(shù): | $type (string) – 要求的結(jié)果類型 - array, object, 或 類名 |
---|---|
返回: | 結(jié)果集的下一行,不存在時返回 NULL |
返回類型: | mixed |
返回結(jié)果集的下一行。
getPreviousRow
([$type = 'object'])
參數(shù): | $type (string) – 要求的結(jié)果類型 - array, object, 或 類名 |
---|---|
返回: | 結(jié)果集的上一行,不存在時返回 NULL |
返回類型: | mixed |
返回結(jié)果集的上一行。
getFirstRow
([$type = 'object'])
參數(shù): | $type (string) – 要求的結(jié)果類型 - array, object, 或 類名 |
---|---|
返回: | 結(jié)果集的第一行,不存在時返回 NULL |
返回類型: | mixed |
返回結(jié)果集的第一行。
getLastRow
([$type = 'object'])
參數(shù): | $type (string) – 要求的結(jié)果類型 - array, object, 或 類名 |
---|---|
返回: | 結(jié)果集的最后一行,不存在時返回 NULL |
返回類型: | mixed |
返回結(jié)果集的最后一行。
getFieldCount
()
返回: | 結(jié)果集中字段的個數(shù) |
---|---|
返回類型: | int |
返回結(jié)果集中字段的個數(shù)。
用法: 詳見 結(jié)果處理輔助函數(shù)
.
getFieldNames
()
returns: | 列名稱的數(shù)組 |
---|---|
rtype: | array |
返回一個包含結(jié)果集中字段名的數(shù)組。
getFieldData
()
返回: | 包含字段元數(shù)據(jù)的數(shù)組 |
---|---|
返回類型: | array |
生成一個包含字段元數(shù)據(jù)的 stdClass
對象的數(shù)組。
freeResult
()
返回類型: | void |
---|---|
釋放一個結(jié)果集。
用法: 詳見 結(jié)果處理輔助函數(shù)
.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: