?
This document uses PHP Chinese website manual Release
這是獨(dú)立于平臺的基本DB實(shí)現(xiàn)類。這個類不會直接被調(diào)用。相反,特定數(shù)據(jù)庫的適配器類將擴(kuò)展并實(shí)例化它。
這方面的如何材料已被分成幾篇文章。本文旨在為他們提供參考。
重要
并非所有數(shù)據(jù)庫驅(qū)動程序都支持所有方法,但如果底層驅(qū)動程序不支持它們,其中一些可能會失?。ú⒎祷谾ALSE)。
class CI_DB_driverinitialize()
返回: | 成功為TRUE,失敗為FALSE |
---|---|
返回類型: | 布爾 |
db_connect($persistent = TRUE)
參數(shù): | $ persistent(bool) - 是建立一個持久連接還是一個常規(guī)連接 |
---|---|
返回: | 數(shù)據(jù)庫連接資源/對象或FALSE失敗 |
返回類型: | 雜 |
$ persistent(bool) - 是建立一個持久連接還是一個常規(guī)連接返回:數(shù)據(jù)庫連接資源/對象或FALSE失敗返回類型:mixed與數(shù)據(jù)庫建立連接。注意返回的值取決于正在使用的基礎(chǔ)驅(qū)動程序。例如,一個mysqli
實(shí)例將使用'mysqli'驅(qū)動程序返回。db_pconnect()
返回:數(shù)據(jù)庫連接資源/對象或FALSE失敗reconnect()
返回類型:混合返回:成功時為TRUE,失敗時返回FRESE類型:bool db_select([$database = ''])
參數(shù):$ database(string) - 數(shù)據(jù)庫名稱返回:成功時為TRUE,失敗時為FALSE返回類型:BOOL
$ database(string) - 數(shù)據(jù)庫名稱
返回:成功時為TRUE,失敗時為FALSE
返回類型:布爾值
選擇/切換當(dāng)前數(shù)據(jù)庫。
db_set_charset($charset)
參數(shù): | $ charset(字符串) - 字符集名稱 |
---|---|
返回: | 成功為TRUE,失敗為FALSE |
返回類型: | 布爾 |
$ charset(字符串) - 字符集名稱返回:成功時為TRUE,失敗時為FALSE返回類型:布爾值設(shè)置客戶端字符集。platform()
返回:平臺名稱返回類型:字符串version()
返回:正在使用的數(shù)據(jù)庫版本返回類型:字符串query($sql[, $binds = FALSE[, $return_object = NULL]])
參數(shù):$ sql(string) - 要執(zhí)行的SQL語句$ binds(array) - 綁定數(shù)據(jù)數(shù)組$ return_object(bool) - 是否返回結(jié)果對象or notReturns:成功的“寫入式”查詢?yōu)門RUE,“查詢”成功為CI_DB_result實(shí)例(方法鏈接),失敗時為FALSE返回類型:混合
$ sql(string) - 要執(zhí)行的SQL語句
$ binds(array) - 一組綁定數(shù)據(jù)
$ return_object(bool) - 是否返回結(jié)果對象
返回:成功的“寫入類型”查詢?yōu)門RUE,“查詢”成功為CI \ _DB \ __結(jié)果實(shí)例(方法鏈接),失敗時為FALSE
返回類型:混合
執(zhí)行一個SQL查詢。
接受SQL字符串作為輸入,并在成功執(zhí)行“讀”類型查詢時返回結(jié)果對象。
返回:
在成功執(zhí)行“寫類型”查詢時為布爾值
失敗時布爾值為假
CI_DB_result
對象,用于“讀取類型”查詢。
simple_query($sql)
參數(shù): | $ sql(string) - 要執(zhí)行的SQL語句 |
---|---|
返回: | 無論底層驅(qū)動程序的“查詢”函數(shù)如何返回 |
返回類型: | 雜 |
$ sql(string) - 要執(zhí)行的SQL語句返回:無論底層驅(qū)動程序的“查詢”函數(shù)返回什么返回類型:混合該query()
方法的簡化版本,適用于不需要獲取結(jié)果對象或僅用于發(fā)送一個查詢到數(shù)據(jù)庫而不關(guān)心結(jié)果。affected_rows()
返回:受影響的行數(shù)返回類型:int trans_strict([$mode = TRUE])
參數(shù):$ mode(bool) - 嚴(yán)格模式標(biāo)志返回類型:void
$ mode(bool) - 嚴(yán)格模式標(biāo)志
Return type: void
啟用/禁用事務(wù)“嚴(yán)格”模式。
啟用嚴(yán)格模式時,如果您正在運(yùn)行多組事務(wù),而一個組失敗,則將回滾所有后續(xù)組。
如果禁用了嚴(yán)格模式,每個組將被自主處理,這意味著一個組的失敗不會影響其他組。
trans_off()
Return type: | void |
---|
trans_start([$test_mode = FALSE])
參數(shù): | $ test_mode(bool) - 測試模式標(biāo)志 |
---|---|
返回: | 成功為TRUE,失敗為FALSE |
返回類型: | 布爾 |
$ test_mode(bool) - 測試模式標(biāo)志返回:成功時為TRUE,失敗時為FALSE返回類型:BOOL開始一個事務(wù)。trans_complete()
返回:成功時為TRUE,失敗時trans_status()
返回FALSE類型:bool 返回:如果事務(wù)成功返回TRUE,如果失敗則返回FALSE 返回類型:BOOL compile_binds($sql, $binds)
參數(shù):$ sql(string) - SQL語句$ binds(array) - 綁定dataReturns數(shù)組:更新的SQL語句返回類型:字符串
$ sql(string) - SQL語句
$ binds(array) - 一組綁定數(shù)據(jù)
返回:更新的SQL語句
返回類型:字符串
使用為其傳遞的綁定值編譯SQL查詢。
is_write_type($sql)
參數(shù): | $ sql(string) - SQL語句 |
---|---|
返回: | 如果SQL語句是“寫入類型”則為TRUE,否則為FALSE |
返回類型: | 布爾 |
$ sql(string) - SQL語句返回:如果SQL語句為“寫入類型”則返回TRUE,否則返回FALSE返回類型:布爾型確定查詢是否為“寫入”類型(例如INSERT,UPDATE,DELETE)或“讀取”類型(即SELECT)。elapsed_time([$decimals = 6])
參數(shù):$ decimals(int) - 小數(shù)位數(shù)返回:聚合查詢已用時間(以微秒為單位)返回類型:字符串
$ decimals(int) - 小數(shù)位數(shù)
返回:聚合查詢已用時間(以微秒為單位)
返回類型:字符串
計(jì)算聚合查詢已用時間。
total_queries()
返回: | 執(zhí)行的查詢總數(shù) |
---|---|
返回類型: | INT |
last_query()
返回: | 最后一個查詢被執(zhí)行 |
---|---|
返回類型: | 串 |
escape($str)
參數(shù): | $ str(mixed) - 要轉(zhuǎn)義的值或多個數(shù)組的值 |
---|---|
返回: | 轉(zhuǎn)義值(s) |
返回類型: | 雜 |
$ str(mixed) - 要轉(zhuǎn)義的值或多個數(shù)組的數(shù)組返回:轉(zhuǎn)義值返回類型:混合基于類型(包括布爾值和NULL)轉(zhuǎn)義輸入數(shù)據(jù)。escape_str($str[, $like = FALSE])
參數(shù):$ str(mixed) - 一個字符串值或多個數(shù)組$ like(bool) - 字符串是否在LIKE條件中使用返回:轉(zhuǎn)義字符串返回類型:混合
$ str(mixed) - 一個字符串值或多個數(shù)組的數(shù)組
$ like(bool) - 字符串是否在LIKE條件下使用
返回:轉(zhuǎn)義字符串(s)
返回類型:混合
轉(zhuǎn)義字符串值。
警告
返回的字符串不包括它們周圍的引號。
escape_like_str($str)
參數(shù): | $ str(mixed) - 一個字符串值或多個數(shù)組的數(shù)組 |
---|---|
返回: | 轉(zhuǎn)義字符串(s) |
返回類型: | 雜 |
$ str(mixed) - 一個字符串值或多個數(shù)組返回:轉(zhuǎn)義字符串(s)返回類型:混合轉(zhuǎn)義LIKE字符串。與LIKE條件類似escape_str()
,但也會逃避%
和_
通配符,以免它們在LIKE條件下導(dǎo)致誤報(bào)。重要該escape_like_str()
方法使用'!' (感嘆號)為LIKE條件轉(zhuǎn)義特殊字符。因?yàn)榇朔椒〞D(zhuǎn)義部分字符串,而您將自行換行,所以它不能自動ESCAPE '!'
為您添加條件,因此您必須手動執(zhí)行此操作。primary($table)
參數(shù):$ table(string) - 表名返回:主鍵名,F(xiàn)ALSE if返回類型:字符串
$ table(string) - 表名
返回:主鍵名稱,如果不是,則為FALSE
返回類型:字符串
檢索表的主鍵。
注
如果數(shù)據(jù)庫平臺不支持主鍵檢測,則可以假定第一列名稱為主鍵。
count_all([$table = ''])
參數(shù): | $ table(string) - 表名 |
---|---|
返回: | 指定表的行數(shù) |
返回類型: | INT |
$ table(string) - 表名返回:指定表的行數(shù)返回類型:int返回表中的總行數(shù),如果未提供表,則返回0。list_tables([$constrain_by_prefix = FALSE])
參數(shù):$ constrain_by_prefix(bool) - TRUE通過配置的dbprefixReturns匹配表名稱:表名數(shù)組或失敗時的FALSE返回類型:array
$ constrain_by_prefix(bool) - TRUE通過配置的dbprefix匹配表名稱
返回:表名稱的數(shù)組或失敗時的FALSE
返回類型:數(shù)組
獲取當(dāng)前數(shù)據(jù)庫中的表的列表。
table_exists($table_name)
參數(shù): | $ table_name(string) - 表名 |
---|---|
返回: | 如果該表存在則為TRUE,否則為FALSE |
返回類型: | 布爾 |
$ table_name(string) - 表名返回:如果該表存在則為TRUE,否則為FALSE返回類型:bool確定是否存在特定的表。list_fields($table)
參數(shù):$ table(string) - 表名nameReturns:字段名稱的數(shù)組或失敗時的FALSE返回類型:數(shù)組
$ table(string) - 表名
返回:字段名稱的數(shù)組或失敗時的FALSE
返回類型:數(shù)組
獲取表中字段名稱的列表。
field_exists($field_name, $table_name)
參數(shù): | $ table_name(string) - 表名$ field_name(string) - 字段名稱 |
---|---|
返回: | 如果該字段在該表中存在,則為TRUE,否則為FALSE |
返回類型: | 布爾 |
$ table_name(string) - 表名
$ field_name(字符串) - 字段名稱
返回:如果該字段在該表中存在,則返回TRUE;否則返回FALSE
返回類型:布爾值
確定一個特定的字段是否存在。
field_data($table)
參數(shù): | $ table(string) - 表名 |
---|---|
返回: | 字段數(shù)據(jù)項(xiàng)的數(shù)組或失敗時為FALSE |
返回類型: | 排列 |
$ table(string) - 表名稱返回:字段數(shù)據(jù)項(xiàng)的數(shù)組或失敗時的FALSE返回類型:array獲取包含有關(guān)表的字段數(shù)據(jù)的列表。escape_identifiers($item)
參數(shù):$ item(mixed) - 項(xiàng)目或項(xiàng)目數(shù)組escapeReturns:輸入項(xiàng)目,escapedReturn類型:混合
$ item(mixed) - 要轉(zhuǎn)義的項(xiàng)目或數(shù)組項(xiàng)目
返回:輸入項(xiàng)目,已轉(zhuǎn)義
返回類型:混合
轉(zhuǎn)義SQL標(biāo)識符,例如列,表和名稱。
insert_string($table, $data)
參數(shù): | $ table(string) - 目標(biāo)表$ data(array) - 鍵/值對的關(guān)聯(lián)數(shù)組 |
---|---|
返回: | SQL INSERT語句,作為一個字符串 |
返回類型: | 串 |
$ table(string) - 目標(biāo)表
$ data(array) - 一個鍵/值對的關(guān)聯(lián)數(shù)組
返回:SQL INSERT語句,作為字符串
返回類型:字符串
生成一個INSERT語句字符串。
update_string($table, $data, $where)
參數(shù): | $ table(string) - 目標(biāo)表$ data(array) - 鍵/值對的關(guān)聯(lián)數(shù)組$ where(混合) - WHERE語句條件 |
---|---|
返回: | SQL UPDATE語句,作為一個字符串 |
返回類型: | 串 |
$ table(string) - 目標(biāo)表
$ data(array) - 一個鍵/值對的關(guān)聯(lián)數(shù)組
$ where(mixed) - WHERE語句的條件
返回:SQL UPDATE語句,作為字符串
返回類型:字符串
生成一個UPDATE語句字符串。
call_function($function)
參數(shù): | $ function(string) - 函數(shù)名稱 |
---|---|
返回: | 函數(shù)結(jié)果 |
返回類型: | 串 |
$ function(string) - 函數(shù)名返回:函數(shù)結(jié)果返回類型:字符串使用平臺不可知包裝器運(yùn)行本機(jī)PHP函數(shù)。cache_set_path([$path = ''])
參數(shù):$ path(string) - 緩存目錄的路徑返回類型:void
$ path(string) - 緩存目錄的路徑
Return type: void
設(shè)置用于高速緩存存儲的目錄路徑。
cache_on()
返回: | 如果緩存打開則為TRUE,否則為FALSE |
---|---|
返回類型: | 布爾 |
cache_off()
返回: | 如果緩存打開則為TRUE,否則為FALSE |
---|---|
返回類型: | 布爾 |
cache_delete([$segment_one = ''[, $segment_two = '']])
參數(shù): | $ segment_one(字符串) - 第一個URI段$ segment_two(字符串) - 第二個URI段 |
---|---|
返回: | 成功為TRUE,失敗為FALSE |
返回類型: | 布爾 |
$ segment_one(字符串) - 第一個URI段
$ segment_two(字符串) - 第二個URI段
返回:成功時為TRUE,失敗時為FALSE
返回類型:布爾值
刪除與特定URI關(guān)聯(lián)的緩存文件。
cache_delete_all()
返回: | 成功為TRUE,失敗為FALSE |
---|---|
返回類型: | 布爾 |
close()
Return type: | void |
---|
display_error([$error = ''[, $swap = ''[, $native = FALSE]]])
參數(shù): | $ error(string) - 錯誤消息$ swap(string) - 任何“swap”值$ native(bool) - 是否本地化消息 |
---|---|
返回類型: | 空虛 |
返回: | 顯示數(shù)據(jù)庫錯誤屏幕將顯示application / views / errors / error_db.php模板 |
返回類型: | 串 |
$ error(string) - 錯誤消息
$ swap(字符串) - 任何“交換”值
$ native(bool) - 是否本地化消息
Return type: void
返回:顯示數(shù)據(jù)庫錯誤屏幕將顯示application / views / errors / error \ _db.php模板
返回類型:字符串
顯示錯誤消息并停止腳本執(zhí)行。
顯示該消息時,將使用應(yīng)用程序/視圖/錯誤/錯誤[醫(yī)]db.php模板。
protect_identifiers($item[, $prefix_single = FALSE[, $protect_identifiers = NULL[, $field_exists = TRUE]]])
參數(shù): | $ item(string) - 要使用$ item_single(bool)的項(xiàng)目 - 即使輸入項(xiàng)目是單個標(biāo)識符,是否應(yīng)用dbprefix $ protect_identifiers(bool) - 是否引用標(biāo)識符$ field_exists(bool) - 是否提供項(xiàng)目包含一個字段名稱或不包含 |
---|---|
返回: | 修改后的項(xiàng)目 |
返回類型: | 串 |
$ item(string) - 要使用的項(xiàng)目
$ prefix_single(bool) - 即使輸入項(xiàng)是單個標(biāo)識符,是否應(yīng)用dbprefix
$ protect_identifiers(bool) - 是否引用標(biāo)識符
$ field_exists(bool) - 提供的項(xiàng)目是否包含字段名稱
返回:修改的項(xiàng)目
返回類型:字符串
獲取列或表名(可選使用別名)并將配置的_dbprefix_應(yīng)用于它。
為了處理包含路徑的列名,一些邏輯是必需的。
考慮這樣的查詢:
選擇%2A從hostname.database.table.Column作為c來自hostname.database.table
或帶有混疊的查詢:
SELECT m.member_id,m.member_name FROM members as m
由于列名最多可以包含四個段(主機(jī),數(shù)據(jù)庫,表,列)或也有別名前綴,因此我們需要做一些工作來解決這個問題,并在表中插入表前綴(如果存在)正確的位置,并只逃脫正確的標(biāo)識符。
查詢生成器類廣泛使用此方法。