数据库驱动器参考
这是一个平台无关的数据库实现基类,该类不会被直接调用,而是通过特定的数据库适配器类来继承和实现该类。
关于数据库驱动器,已经在其他几篇文档中介绍过,这篇文档将作为它们的一个参考。
重要
并不是所有的方法都被所有的数据库驱动器所支持,当不支持的时候,有些方法可能会失败(返回 FALSE)。
返回:TRUE on success, FALSE on failure返回类型:bool
初始化数据库配置,建立对数据库的连接。
参数:
- **$persistent** (_bool_) -- Whether to establish a persistent connection or a regular one返回:
Database connection resource/object or FALSE on failure返回类型:mixed
建立对数据库的连接。
注解
返回值取决于当前使用的数据库驱动器,例如 mysqli 实例将会返回 'mysqli' 驱动器。
返回:Database connection resource/object or FALSE on failure返回类型:mixed
建立对数据库的连接,使用持久连接。
注解
该方法其实就是调用 db_connect(TRUE) 。
返回:TRUE on success, FALSE on failure返回类型:bool
如果超过服务器的超时时间都没有发送任何查询请求,使用该方法可以让数据库连接保持有效,或重新连接数据库。
参数:
- **$database** (_string_) -- Database name返回:
TRUE on success, FALSE on failure返回类型:bool
切换到某个数据库。
参数:
- **$charset** (_string_) -- Character set name返回:
TRUE on success, FALSE on failure返回类型:bool
设置客户端字符集。
返回:Platform name返回类型:string
当前使用的数据库平台(mysql、mssql 等)。
返回:The version of the database being used返回类型:string
数据库版本。
参数:
- **$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
执行一个 SQL 查询。
如果是读类型的查询,执行 SQL 成功后将返回结果对象。
有以下几种可能的返回值:
- 如果是写类型的查询,执行成功返回 TRUE
- 执行失败返回 FALSE
- 如果是读类型的查询,执行成功返回 CI_DB_result 对象
参数:
- **$sql** (_string_) -- The SQL statement to execute返回:
Whatever the underlying driver's "query" function returns返回类型:mixed
query() 方法的简化版,当你只需要简单的执行一个查询,并不关心查询的结果时,可以使用该方法。
返回:Number of rows affected返回类型:int
Returns the number of rows changed by the last executed query.
Useful for checking how much rows were created, updated or deletedduring the last executed query.
参数:
- **$mode** (_bool_) -- Strict mode flag返回类型:
void
启用或禁用事务的严格模式。
在严格模式下,如果你正在运行多组事务,只要有一组失败,所有组都会被回滚。
如果禁用严格模式,那么每一组都被视为独立的组,这意味着其中一组失败不会影响其他的组。
返回类型:void
实时的禁用事务。
参数:
- **$test_mode** (_bool_) -- Test mode flag返回:
TRUE on success, FALSE on failure返回类型:bool
开启一个事务。
返回:TRUE on success, FALSE on failure返回类型:bool
结束事务。
返回:TRUE if the transaction succeeded, FALSE if it failed返回类型:bool
获取事务的状态,用来判断事务是否执行成功。
参数:
- **$sql** (_string_) -- The SQL statement
- **$binds** (_array_) -- An array of binding data返回:
The updated SQL statement返回类型:string
根据绑定的参数值编译 SQL 查询。
参数:
- **$sql** (_string_) -- The SQL statement返回:
TRUE if the SQL statement is of "write type", FALSE if not返回类型:bool
判断查询是写类型(INSERT、UPDATE、DELETE),还是读类型(SELECT)。
参数:
- **$decimals** (_int_) -- The number of decimal places返回:
The aggregate query elapsed time, in microseconds返回类型:string
计算查询所消耗的时间。
返回:The total number of queries executed返回类型:int
返回当前已经执行了多少次查询。
返回:The last query executed返回类型:string
返回上一次执行的查询。
参数:
- **$str** (_mixed_) -- The value to escape, or an array of multiple ones返回:
The escaped value(s)返回类型:mixed
根据输入数据的类型进行数据转义,包括布尔值和空值。
参数:
- **$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
转义字符串。
警告
返回的字符串没有用引号引起来。
参数:
- **$str** (_mixed_) -- A string value or array of multiple ones返回:
The escaped string(s)返回类型:mixed
转义 LIKE 字符串。
和 escapestr() 方法类似,但同时也对 LIKE 语句中的 % 和 通配符进行转义。
重要
The escapelike_str() method uses '!' (exclamation mark)to escape special characters for _LIKE conditions. Because thismethod escapes partial strings that you would wrap in quotesyourself, it cannot automatically add the ESCAPE'!'condition for you, and so you'll have to manually do that.
参数:
- **$table** (_string_) -- Table name返回:
The primary key name, FALSE if none返回类型:string
获取一个表的主键。
注解
如果数据库不支持主键检测,将假设第一列就是主键。
参数:
- **$table** (_string_) -- Table name返回:
Row count for the specified table返回类型:int
返回表中的总记录数。
参数:
- **$constrain_by_prefix** (_bool_) -- TRUE to match table names by the configured dbprefix返回:
Array of table names or FALSE on failure返回类型:array
返回当前数据库的所有表。
参数:
- **$table_name** (_string_) -- The table name返回:
TRUE if that table exists, FALSE if not返回类型:bool
判断某个数据库表是否存在。
参数:
- **$table** (_string_) -- The table name返回:
Array of field names or FALSE on failure返回类型:array
返回某个表的所有字段名。
参数:
- **$table_name** (_string_) -- The table name
- **$field_name** (_string_) -- The field name返回:
TRUE if that field exists in that table, FALSE if not返回类型:bool
判断某个字段是否存在。
参数:
- **$table** (_string_) -- The table name返回:
Array of field data items or FALSE on failure返回类型:array
获取某个表的所有字段信息。
参数:
- **$item** (_mixed_) -- The item or array of items to escape返回:
The input item(s), escaped返回类型:mixed
对 SQL 标识符进行转义,例如列名、表名、关键字。
参数:
- **$table** (_string_) -- The target table
- **$data** (_array_) -- An associative array of key/value pairs返回:
The SQL INSERT statement, as a string返回类型:string
生成 INSERT 语句。
参数:
- **$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 语句。
参数:
- **$function** (_string_) -- Function name返回:
The function result返回类型:string
使用一种平台无关的方式执行一个原生的 PHP 函数。
参数:
- **$path** (_string_) -- Path to the cache directory返回类型:
void
设置缓存路径。
返回:TRUE if caching is on, FALSE if not返回类型:bool
启用数据库结果缓存。
返回:TRUE if caching is on, FALSE if not返回类型:bool
禁用数据库结果缓存。
参数:
- **$segment_one** (_string_) -- First URI segment
- **$segment_two** (_string_) -- Second URI segment返回:
TRUE on success, FALSE on failure返回类型:bool
删除特定 URI 的缓存文件。
返回:TRUE on success, FALSE on failure返回类型:bool
删除所有缓存文件。
返回类型:void
关闭数据库的连接。
参数:
- **$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
显示一个错误信息,并终止脚本执行。
错误信息是使用 application/views/errors/error_db.php 文件中的模板来显示。
- protectidentifiers($item[, $prefixsingle = FALSE[, $protect_identifiers = NULL[, $field_exists = TRUE]]])
参数:
- **$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
根据配置的 dbprefix 参数,给列名或表名(可能是表别名)添加一个前缀。
为了处理包含路径的列名,必须要考虑一些逻辑。
例如下面的查询:
- SELECT * FROM hostname.database.table.column AS c FROM hostname.database.table
或者下面这个查询,使用了表别名:
- SELECT m.member_id, m.member_name FROM members AS m
由于列名可以包含四段(主机、数据库名、表名、字段名)或者有一个表别名的前缀,我们需要做点工作来判断这一点,才能将 dbprefix 插入到正确的位置。
该方法在查询构造器类中被广泛使用。