CodeIgniter 數(shù)據(jù)庫驅(qū)動器參考

2018-07-21 15:42 更新

數(shù)據(jù)庫驅(qū)動器參考

這是一個平臺無關(guān)的數(shù)據(jù)庫實(shí)現(xiàn)基類,該類不會被直接調(diào)用, 而是通過特定的數(shù)據(jù)庫適配器類來繼承和實(shí)現(xiàn)該類。

關(guān)于數(shù)據(jù)庫驅(qū)動器,已經(jīng)在其他幾篇文檔中介紹過,這篇文檔將作為它們的一個參考。

重要
并不是所有的方法都被所有的數(shù)據(jù)庫驅(qū)動器所支持, 當(dāng)不支持的時候,有些方法可能會失?。ǚ祷?FALSE)。

classCI_DB_driver

initialize()

返回: TRUE on success, FALSE on failure
返回類型: bool

初始化數(shù)據(jù)庫配置,建立對數(shù)據(jù)庫的連接。

db_connect($persistent = TRUE)

參數(shù):

  • $persistent (bool) -- Whether to establish a persistent connection or a regular one

返回: Database connection resource/object or FALSE on failure

返回類型: mixed

建立對數(shù)據(jù)庫的連接。

注解

返回值取決于當(dāng)前使用的數(shù)據(jù)庫驅(qū)動器,例如 mysqli 實(shí)例將會返回 'mysqli' 驅(qū)動器。

db_pconnect()

返回: Database connection resource/object or FALSE on failure
返回類型: mixed

建立對數(shù)據(jù)庫的連接,使用持久連接。

注解

該方法其實(shí)就是調(diào)用 db_connect(TRUE) 。

reconnect()

返回: TRUE on success, FALSE on failure
返回類型: bool

如果超過服務(wù)器的超時時間都沒有發(fā)送任何查詢請求, 使用該方法可以讓數(shù)據(jù)庫連接保持有效,或重新連接數(shù)據(jù)庫。

db_select([$database = ''])

參數(shù):

  • $database (string) -- Database name

返回: TRUE on success, FALSE on failure

返回類型: bool

切換到某個數(shù)據(jù)庫。

db_set_charset($charset)

參數(shù):

  • $charset (string) -- Character set name

返回: TRUE on success, FALSE on failure

返回類型: bool

設(shè)置客戶端字符集。

platform()

返回: Platform name
返回類型: string

當(dāng)前使用的數(shù)據(jù)庫平臺(mysql、mssql 等)。

version()

返回: The version of the database being used
返回類型: string

數(shù)據(jù)庫版本。

query($sql[, $binds = FALSE[, $return_object = NULL]]])

參數(shù):

  • $sql (string) -- The SQL statement to execute
  • $binds (array) -- An array of binding data
  • $return_object (bool) -- Whether to return a result object or not

返回: TRUE for successful "write-type" queries, CI_DB_result instance (method chaining) on "query" success, FALSE on failure

返回類型: mixed

執(zhí)行一個 SQL 查詢。

如果是讀類型的查詢,執(zhí)行 SQL 成功后將返回結(jié)果對象。

有以下幾種可能的返回值:

  • 如果是寫類型的查詢,執(zhí)行成功返回 TRUE
  • 執(zhí)行失敗返回 FALSE
  • 如果是讀類型的查詢,執(zhí)行成功返回 CI_DB_result 對象

simple_query($sql)

參數(shù):

  • $sql (string) -- The SQL statement to execute

返回: Whatever the underlying driver's "query" function returns

返回類型: mixed

query() 方法的簡化版,當(dāng)你只需要簡單的執(zhí)行一個查詢,并不關(guān)心查詢的結(jié)果時, 可以使用該方法。

trans_strict([$mode = TRUE])

參數(shù):

  • $mode (bool) -- Strict mode flag

返回類型: void

啟用或禁用事務(wù)的嚴(yán)格模式。

在嚴(yán)格模式下,如果你正在運(yùn)行多組事務(wù),只要有一組失敗,所有組都會被回滾。 如果禁用嚴(yán)格模式,那么每一組都被視為獨(dú)立的組, 這意味著其中一組失敗不會影響其他的組。

trans_off()

返回類型: void

實(shí)時的禁用事務(wù)。

trans_start([$test_mode = FALSE])

參數(shù):

  • $test_mode (bool) -- Test mode flag

返回類型: void

開啟一個事務(wù)。

trans_complete()

返回類型: void

結(jié)束事務(wù)。

trans_status()

返回: TRUE if the transaction succeeded, FALSE if it failed
返回類型: bool

獲取事務(wù)的狀態(tài),用來判斷事務(wù)是否執(zhí)行成功。

compile_binds($sql, $binds)

參數(shù):

  • $sql (string) -- The SQL statement
  • $binds (array) -- An array of binding data

返回: The updated SQL statement

返回類型: string

根據(jù)綁定的參數(shù)值編譯 SQL 查詢。

is_write_type($sql)

參數(shù):

  • $sql (string) -- The SQL statement

返回: TRUE if the SQL statement is of "write type", FALSE if not

返回類型: bool

判斷查詢是寫類型(INSERT、UPDATE、DELETE),還是讀類型(SELECT)。

elapsed_time([$decimals = 6])

參數(shù):

  • $decimals (int) -- The number of decimal places

返回: The aggregate query elapsed time, in microseconds

返回類型: string

計(jì)算查詢所消耗的時間。

total_queries()

返回: The total number of queries executed
返回類型: int

返回當(dāng)前已經(jīng)執(zhí)行了多少次查詢。

last_query()

返回: The last query executed
返回類型: string

返回上一次執(zhí)行的查詢。

escape($str)

參數(shù):

  • $str (mixed) -- The value to escape, or an array of multiple ones

返回: The escaped value(s)

返回類型: mixed

根據(jù)輸入數(shù)據(jù)的類型進(jìn)行數(shù)據(jù)轉(zhuǎn)義,包括布爾值和空值。

escape_str($str[, $like = FALSE])

參數(shù):

  • $str (mixed) -- A string value or array of multiple ones
  • $like (bool) -- Whether or not the string will be used in a LIKE condition

返回: The escaped string(s)

返回類型: mixed

轉(zhuǎn)義字符串。

警告

返回的字符串沒有用引號引起來。

escape_like_str($str)

參數(shù):

  • $str (mixed) -- A string value or array of multiple ones

返回: The escaped string(s)

返回類型: mixed

轉(zhuǎn)義 LIKE 字符串。

和 escapestr() 方法類似,但同時也對 LIKE 語句中的 % 和  通配符進(jìn)行轉(zhuǎn)義。

primary($table)

參數(shù):

  • $table (string) -- Table name

返回: The primary key name, FALSE if none

返回類型: string

獲取一個表的主鍵。

注解

如果數(shù)據(jù)庫不支持主鍵檢測,將假設(shè)第一列就是主鍵。

count_all([$table = ''])

參數(shù):

  • $table (string) -- Table name

返回: Row count for the specified table

返回類型: int

返回表中的總記錄數(shù)。

list_tables([$constrain_by_prefix = FALSE])

參數(shù):

  • $constrain_by_prefix (bool) -- TRUE to match table names by the configured dbprefix

返回: Array of table names or FALSE on failure

返回類型: array

返回當(dāng)前數(shù)據(jù)庫的所有表。

table_exists($table_name)

參數(shù):

  • $table_name (string) -- The table name

返回: TRUE if that table exists, FALSE if not

返回類型: bool

判斷某個數(shù)據(jù)庫表是否存在。

list_fields($table)

參數(shù):

  • $table (string) -- The table name

返回: Array of field names or FALSE on failure

返回類型: array

返回某個表的所有字段名。

field_exists($field_name, $table_name)

參數(shù):

  • $table_name (string) -- The table name
  • $field_name (string) -- The field name

返回:TRUE if that field exists in that table, FALSE if not

返回類型: bool

判斷某個字段是否存在。

field_data($table)

參數(shù):

  • $table (string) -- The table name

返回: Array of field data items or FALSE on failure

返回類型: array

獲取某個表的所有字段信息。

escape_identifiers($item)

參數(shù):

  • $item (mixed) -- The item or array of items to escape

返回: The input item(s), escaped

返回類型: mixed

對 SQL 標(biāo)識符進(jìn)行轉(zhuǎn)義,例如列名、表名、關(guān)鍵字。

insert_string($table, $data)

參數(shù):

  • $table (string) -- The target table
  • $data (array) -- An associative array of key/value pairs

返回: The SQL INSERT statement, as a string

返回類型: string

生成 INSERT 語句。

update_string($table, $data, $where)

參數(shù):

  • $table (string) -- The target table
  • $data (array) -- An associative array of key/value pairs
  • $where (mixed) -- The WHERE statement conditions

    返回: The SQL UPDATE statement, as a string

返回類型: string

生成 UPDATE 語句。

call_function($function)

參數(shù):

  • $function (string) -- Function name

返回: The function result

返回類型: string

使用一種平臺無關(guān)的方式執(zhí)行一個原生的 PHP 函數(shù)。

cache_set_path([$path = ''])

參數(shù):

  • $path (string) -- Path to the cache directory

返回類型: void

設(shè)置緩存路徑。

cache_on()

返回: TRUE if caching is on, FALSE if not
返回類型: bool

啟用數(shù)據(jù)庫結(jié)果緩存。

cache_off()

返回: TRUE if caching is on, FALSE if not
|返回類型: bool

禁用數(shù)據(jù)庫結(jié)果緩存。

cache_delete([$segment_one = ''[, $segment_two = '']])

參數(shù):

  • $segment_one (string) -- First URI segment
  • $segment_two (string) -- Second URI segment

返回: TRUE on success, FALSE on failure

返回類型: bool

刪除特定 URI 的緩存文件。

cache_delete_all()

返回: TRUE on success, FALSE on failure
返回類型: bool

刪除所有緩存文件。

close()

返回類型: void

關(guān)閉數(shù)據(jù)庫的連接。

display_error([$error = ''[, $swap = ''[, $native = FALSE]]])

參數(shù):

  • $error (string) -- The error message
  • $swap (string) -- Any "swap" values
  • $native (bool) -- Whether to localize the message

返回類型: void

返回: Displays the DB error screensends the application/views/errors/error_db.php template

顯示一個錯誤信息,并終止腳本執(zhí)行。

錯誤信息是使用 application/views/errors/error_db.php 文件中的模板來顯示。

protect_identifiers($item[, $prefix_single = FALSE[, $protect_identifiers = NULL[, $field_exists = TRUE]]])

參數(shù):

  • $item (string) -- The item to work with
  • $prefix_single (bool) -- Whether to apply the dbprefix even if the input item is a single identifier
  • $protect_identifiers (bool) -- Whether to quote identifiers
  • $field_exists (bool) -- Whether the supplied item contains a field name or not

返回:

The modified item

返回類型: string

根據(jù)配置的 dbprefix 參數(shù),給列名或表名(可能是表別名)添加一個前綴。

為了處理包含路徑的列名,必須要考慮一些邏輯。

例如下面的查詢:

SELECT * FROM hostname.database.table.column AS c FROM hostname.database.table

或者下面這個查詢,使用了表別名:

SELECT m.member_id, m.member_name FROM members AS m

由于列名可以包含四段(主機(jī)、數(shù)據(jù)庫名、表名、字段名)或者有一個表別名的前綴, 我們需要做點(diǎn)工作來判斷這一點(diǎn),才能將 dbprefix 插入到正確的位置。

該方法在查詢構(gòu)造器類中被廣泛使用。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號