©
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
这是独立于平台的基本DB实现类。这个类不会直接被调用。相反,特定数据库的适配器类将扩展并实例化它。
这方面的如何材料已被分成几篇文章。本文旨在为他们提供参考。
重要
并非所有数据库驱动程序都支持所有方法,但如果底层驱动程序不支持它们,其中一些可能会失败(并返回FALSE)。
class CI_DB_driverinitialize()
返回: | 成功为TRUE,失败为FALSE |
---|---|
返回类型: | 布尔 |
db_connect($persistent = TRUE)
参数: | $ persistent(bool) - 是建立一个持久连接还是一个常规连接 |
---|---|
返回: | 数据库连接资源/对象或FALSE失败 |
返回类型: | 杂 |
$ persistent(bool) - 是建立一个持久连接还是一个常规连接返回:数据库连接资源/对象或FALSE失败返回类型:mixed与数据库建立连接。注意返回的值取决于正在使用的基础驱动程序。例如,一个mysqli
实例将使用'mysqli'驱动程序返回。db_pconnect()
返回:数据库连接资源/对象或FALSE失败reconnect()
返回类型:混合返回:成功时为TRUE,失败时返回FRESE类型:bool db_select([$database = ''])
参数:$ database(string) - 数据库名称返回:成功时为TRUE,失败时为FALSE返回类型:BOOL
$ database(string) - 数据库名称
返回:成功时为TRUE,失败时为FALSE
返回类型:布尔值
选择/切换当前数据库。
db_set_charset($charset)
参数: | $ charset(字符串) - 字符集名称 |
---|---|
返回: | 成功为TRUE,失败为FALSE |
返回类型: | 布尔 |
$ charset(字符串) - 字符集名称返回:成功时为TRUE,失败时为FALSE返回类型:布尔值设置客户端字符集。platform()
返回:平台名称返回类型:字符串version()
返回:正在使用的数据库版本返回类型:字符串query($sql[, $binds = FALSE[, $return_object = NULL]])
参数:$ sql(string) - 要执行的SQL语句$ binds(array) - 绑定数据数组$ return_object(bool) - 是否返回结果对象or notReturns:成功的“写入式”查询为TRUE,“查询”成功为CI_DB_result实例(方法链接),失败时为FALSE返回类型:混合
$ sql(string) - 要执行的SQL语句
$ binds(array) - 一组绑定数据
$ return_object(bool) - 是否返回结果对象
返回:成功的“写入类型”查询为TRUE,“查询”成功为CI \ _DB \ __结果实例(方法链接),失败时为FALSE
返回类型:混合
执行一个SQL查询。
接受SQL字符串作为输入,并在成功执行“读”类型查询时返回结果对象。
返回:
在成功执行“写类型”查询时为布尔值
失败时布尔值为假
CI_DB_result
对象,用于“读取类型”查询。
simple_query($sql)
参数: | $ sql(string) - 要执行的SQL语句 |
---|---|
返回: | 无论底层驱动程序的“查询”函数如何返回 |
返回类型: | 杂 |
$ sql(string) - 要执行的SQL语句返回:无论底层驱动程序的“查询”函数返回什么返回类型:混合该query()
方法的简化版本,适用于不需要获取结果对象或仅用于发送一个查询到数据库而不关心结果。affected_rows()
返回:受影响的行数返回类型:int trans_strict([$mode = TRUE])
参数:$ mode(bool) - 严格模式标志返回类型:void
$ mode(bool) - 严格模式标志
Return type: void
启用/禁用事务“严格”模式。
启用严格模式时,如果您正在运行多组事务,而一个组失败,则将回滚所有后续组。
如果禁用了严格模式,每个组将被自主处理,这意味着一个组的失败不会影响其他组。
trans_off()
Return type: | void |
---|
trans_start([$test_mode = FALSE])
参数: | $ test_mode(bool) - 测试模式标志 |
---|---|
返回: | 成功为TRUE,失败为FALSE |
返回类型: | 布尔 |
$ test_mode(bool) - 测试模式标志返回:成功时为TRUE,失败时为FALSE返回类型:BOOL开始一个事务。trans_complete()
返回:成功时为TRUE,失败时trans_status()
返回FALSE类型:bool 返回:如果事务成功返回TRUE,如果失败则返回FALSE 返回类型:BOOL compile_binds($sql, $binds)
参数:$ sql(string) - SQL语句$ binds(array) - 绑定dataReturns数组:更新的SQL语句返回类型:字符串
$ sql(string) - SQL语句
$ binds(array) - 一组绑定数据
返回:更新的SQL语句
返回类型:字符串
使用为其传递的绑定值编译SQL查询。
is_write_type($sql)
参数: | $ sql(string) - SQL语句 |
---|---|
返回: | 如果SQL语句是“写入类型”则为TRUE,否则为FALSE |
返回类型: | 布尔 |
$ sql(string) - SQL语句返回:如果SQL语句为“写入类型”则返回TRUE,否则返回FALSE返回类型:布尔型确定查询是否为“写入”类型(例如INSERT,UPDATE,DELETE)或“读取”类型(即SELECT)。elapsed_time([$decimals = 6])
参数:$ decimals(int) - 小数位数返回:聚合查询已用时间(以微秒为单位)返回类型:字符串
$ decimals(int) - 小数位数
返回:聚合查询已用时间(以微秒为单位)
返回类型:字符串
计算聚合查询已用时间。
total_queries()
返回: | 执行的查询总数 |
---|---|
返回类型: | INT |
last_query()
返回: | 最后一个查询被执行 |
---|---|
返回类型: | 串 |
escape($str)
参数: | $ str(mixed) - 要转义的值或多个数组的值 |
---|---|
返回: | 转义值(s) |
返回类型: | 杂 |
$ str(mixed) - 要转义的值或多个数组的数组返回:转义值返回类型:混合基于类型(包括布尔值和NULL)转义输入数据。escape_str($str[, $like = FALSE])
参数:$ str(mixed) - 一个字符串值或多个数组$ like(bool) - 字符串是否在LIKE条件中使用返回:转义字符串返回类型:混合
$ str(mixed) - 一个字符串值或多个数组的数组
$ like(bool) - 字符串是否在LIKE条件下使用
返回:转义字符串(s)
返回类型:混合
转义字符串值。
警告
返回的字符串不包括它们周围的引号。
escape_like_str($str)
参数: | $ str(mixed) - 一个字符串值或多个数组的数组 |
---|---|
返回: | 转义字符串(s) |
返回类型: | 杂 |
$ str(mixed) - 一个字符串值或多个数组返回:转义字符串(s)返回类型:混合转义LIKE字符串。与LIKE条件类似escape_str()
,但也会逃避%
和_
通配符,以免它们在LIKE条件下导致误报。重要该escape_like_str()
方法使用'!' (感叹号)为LIKE条件转义特殊字符。因为此方法会转义部分字符串,而您将自行换行,所以它不能自动ESCAPE '!'
为您添加条件,因此您必须手动执行此操作。primary($table)
参数:$ table(string) - 表名返回:主键名,FALSE if返回类型:字符串
$ table(string) - 表名
返回:主键名称,如果不是,则为FALSE
返回类型:字符串
检索表的主键。
注
如果数据库平台不支持主键检测,则可以假定第一列名称为主键。
count_all([$table = ''])
参数: | $ table(string) - 表名 |
---|---|
返回: | 指定表的行数 |
返回类型: | INT |
$ table(string) - 表名返回:指定表的行数返回类型:int返回表中的总行数,如果未提供表,则返回0。list_tables([$constrain_by_prefix = FALSE])
参数:$ constrain_by_prefix(bool) - TRUE通过配置的dbprefixReturns匹配表名称:表名数组或失败时的FALSE返回类型:array
$ constrain_by_prefix(bool) - TRUE通过配置的dbprefix匹配表名称
返回:表名称的数组或失败时的FALSE
返回类型:数组
获取当前数据库中的表的列表。
table_exists($table_name)
参数: | $ table_name(string) - 表名 |
---|---|
返回: | 如果该表存在则为TRUE,否则为FALSE |
返回类型: | 布尔 |
$ table_name(string) - 表名返回:如果该表存在则为TRUE,否则为FALSE返回类型:bool确定是否存在特定的表。list_fields($table)
参数:$ table(string) - 表名nameReturns:字段名称的数组或失败时的FALSE返回类型:数组
$ table(string) - 表名
返回:字段名称的数组或失败时的FALSE
返回类型:数组
获取表中字段名称的列表。
field_exists($field_name, $table_name)
参数: | $ table_name(string) - 表名$ field_name(string) - 字段名称 |
---|---|
返回: | 如果该字段在该表中存在,则为TRUE,否则为FALSE |
返回类型: | 布尔 |
$ table_name(string) - 表名
$ field_name(字符串) - 字段名称
返回:如果该字段在该表中存在,则返回TRUE;否则返回FALSE
返回类型:布尔值
确定一个特定的字段是否存在。
field_data($table)
参数: | $ table(string) - 表名 |
---|---|
返回: | 字段数据项的数组或失败时为FALSE |
返回类型: | 排列 |
$ table(string) - 表名称返回:字段数据项的数组或失败时的FALSE返回类型:array获取包含有关表的字段数据的列表。escape_identifiers($item)
参数:$ item(mixed) - 项目或项目数组escapeReturns:输入项目,escapedReturn类型:混合
$ item(mixed) - 要转义的项目或数组项目
返回:输入项目,已转义
返回类型:混合
转义SQL标识符,例如列,表和名称。
insert_string($table, $data)
参数: | $ table(string) - 目标表$ data(array) - 键/值对的关联数组 |
---|---|
返回: | SQL INSERT语句,作为一个字符串 |
返回类型: | 串 |
$ table(string) - 目标表
$ data(array) - 一个键/值对的关联数组
返回:SQL INSERT语句,作为字符串
返回类型:字符串
生成一个INSERT语句字符串。
update_string($table, $data, $where)
参数: | $ table(string) - 目标表$ data(array) - 键/值对的关联数组$ where(混合) - WHERE语句条件 |
---|---|
返回: | SQL UPDATE语句,作为一个字符串 |
返回类型: | 串 |
$ table(string) - 目标表
$ data(array) - 一个键/值对的关联数组
$ where(mixed) - WHERE语句的条件
返回:SQL UPDATE语句,作为字符串
返回类型:字符串
生成一个UPDATE语句字符串。
call_function($function)
参数: | $ function(string) - 函数名称 |
---|---|
返回: | 函数结果 |
返回类型: | 串 |
$ function(string) - 函数名返回:函数结果返回类型:字符串使用平台不可知包装器运行本机PHP函数。cache_set_path([$path = ''])
参数:$ path(string) - 缓存目录的路径返回类型:void
$ path(string) - 缓存目录的路径
Return type: void
设置用于高速缓存存储的目录路径。
cache_on()
返回: | 如果缓存打开则为TRUE,否则为FALSE |
---|---|
返回类型: | 布尔 |
cache_off()
返回: | 如果缓存打开则为TRUE,否则为FALSE |
---|---|
返回类型: | 布尔 |
cache_delete([$segment_one = ''[, $segment_two = '']])
参数: | $ segment_one(字符串) - 第一个URI段$ segment_two(字符串) - 第二个URI段 |
---|---|
返回: | 成功为TRUE,失败为FALSE |
返回类型: | 布尔 |
$ segment_one(字符串) - 第一个URI段
$ segment_two(字符串) - 第二个URI段
返回:成功时为TRUE,失败时为FALSE
返回类型:布尔值
删除与特定URI关联的缓存文件。
cache_delete_all()
返回: | 成功为TRUE,失败为FALSE |
---|---|
返回类型: | 布尔 |
close()
Return type: | void |
---|
display_error([$error = ''[, $swap = ''[, $native = FALSE]]])
参数: | $ error(string) - 错误消息$ swap(string) - 任何“swap”值$ native(bool) - 是否本地化消息 |
---|---|
返回类型: | 空虚 |
返回: | 显示数据库错误屏幕将显示application / views / errors / error_db.php模板 |
返回类型: | 串 |
$ error(string) - 错误消息
$ swap(字符串) - 任何“交换”值
$ native(bool) - 是否本地化消息
Return type: void
返回:显示数据库错误屏幕将显示application / views / errors / error \ _db.php模板
返回类型:字符串
显示错误消息并停止脚本执行。
显示该消息时,将使用应用程序/视图/错误/错误[医]db.php模板。
protect_identifiers($item[, $prefix_single = FALSE[, $protect_identifiers = NULL[, $field_exists = TRUE]]])
参数: | $ item(string) - 要使用$ item_single(bool)的项目 - 即使输入项目是单个标识符,是否应用dbprefix $ protect_identifiers(bool) - 是否引用标识符$ field_exists(bool) - 是否提供项目包含一个字段名称或不包含 |
---|---|
返回: | 修改后的项目 |
返回类型: | 串 |
$ item(string) - 要使用的项目
$ prefix_single(bool) - 即使输入项是单个标识符,是否应用dbprefix
$ protect_identifiers(bool) - 是否引用标识符
$ field_exists(bool) - 提供的项目是否包含字段名称
返回:修改的项目
返回类型:字符串
获取列或表名(可选使用别名)并将配置的_dbprefix_应用于它。
为了处理包含路径的列名,一些逻辑是必需的。
考虑这样的查询:
选择%2A从hostname.database.table.Column作为c来自hostname.database.table
或带有混叠的查询:
SELECT m.member_id,m.member_name FROM members as m
由于列名最多可以包含四个段(主机,数据库,表,列)或也有别名前缀,因此我们需要做一些工作来解决这个问题,并在表中插入表前缀(如果存在)正确的位置,并只逃脱正确的标识符。
查询生成器类广泛使用此方法。