数据库核心类
| 常量 | |
|---|---|
Database::TYPE_MYSQL |
string(5) "MySQL" |
Database::TYPE_MYSQLI |
string(6) "MySQLI" |
Database::TYPE_MONGO |
string(5) "Mongo" |
Database::TYPE_SQLITE |
string(6) "SQLite" |
Database::TYPE_POSTGRE |
string(7) "Postgre" |
Database::DEFAULT_CONFIG_NAME |
string(7) "default" |
API - Module_Database
- Database::instance - 返回数据库实例化对象
- Database::__construct - new Database('default');
- Database::__destruct
- Database::driver - 获取驱动引擎对象
- Database::config - 获取当前配置数组
- Database::close_connect - 关闭连接
- Database::query - 执行SQL查询
- Database::table_prefix - 返回当前表前缀
- Database::compile - 解析为SQL语句
- Database::get - 获取数据
- Database::get_one - 获取一条数据
- Database::last_query - 最后查询的SQL语句
- Database::update - 更新数据
- Database::insert - 插入数据
- Database::delete - 删除数据
- Database::count_records - 统计指定条件的数量
- Database::replace - 替换数据 replace into
- Database::merge - 替换数据 replace into
- Database::transaction - 获取事务对象
- Database::auto_use_master - 设置是否一直在主数据库上查询
- Database::is_auto_use_master - 是否一直用主数据库查询
- Database::create_database - 创建一个数据库
- Database::parse_dsn - 解析DSN路径格式
- Database::close_all_connect - 关闭全部数据库链接
继承自父类的方法和变量
- Database_QueryBuilder::get_builder - 获取Builder配置
- Database_QueryBuilder::set_builder - 设置Builder信息
- Database_QueryBuilder::distinct - 构成查询 SELECT DISTINCT
- Database_QueryBuilder::select - select(c1, c2, c3,......)
- Database_QueryBuilder::select_array - Choose the columns to select from, using an array.
- Database_QueryBuilder::select_max - 查询最大值
- Database_QueryBuilder::select_min - 查询平均值
- Database_QueryBuilder::select_avg - 查询平均值
- Database_QueryBuilder::select_sum - 查询总和
- Database_QueryBuilder::select_adv - 高级查询方式
- Database_QueryBuilder::columns - Set the columns that will be inserted.
- Database_QueryBuilder::values - 加入多条数据
- Database_QueryBuilder::set - 为update,insert设置数据
- Database_QueryBuilder::value - Set the value of a single column.
- Database_QueryBuilder::value_increment - 数据递增
- Database_QueryBuilder::value_decrement - 数据递减
- Database_QueryBuilder::table - Sets the table to update.
- Database_QueryBuilder::from - from(tableA,tableB,...)
- Database_QueryBuilder::join - Adds addition tables to "JOIN ...".
- Database_QueryBuilder::on - Adds "ON ..." conditions for the last created JOIN statement.
- Database_QueryBuilder::group_by - group_by(c1,c2,c3,.....)
- Database_QueryBuilder::having - Alias of and_having()
- Database_QueryBuilder::and_having - Creates a new "AND HAVING" condition for the query.
- Database_QueryBuilder::or_having - Creates a new "OR HAVING" condition for the query.
- Database_QueryBuilder::having_open - Alias of and_having_open()
- Database_QueryBuilder::and_having_open - Opens a new "AND HAVING (...)" grouping.
- Database_QueryBuilder::or_having_open - Opens a new "OR HAVING (...)" grouping.
- Database_QueryBuilder::having_close - Closes an open "AND HAVING (...)" grouping.
- Database_QueryBuilder::and_having_close - Closes an open "AND HAVING (...)" grouping.
- Database_QueryBuilder::or_having_close - Closes an open "OR HAVING (...)" grouping.
- Database_QueryBuilder::offset - Start returning results after "OFFSET ..."
- Database_QueryBuilder::reset - 重设数据
- Database_QueryBuilder::in
- Database_QueryBuilder::notin
- Database_QueryBuilder::where - Alias of and_where()
- Database_QueryBuilder::and_where - Creates a new "AND WHERE" condition for the query.
- Database_QueryBuilder::or_where - Creates a new "OR WHERE" condition for the query.
- Database_QueryBuilder::where_open - Alias of and_where_open()
- Database_QueryBuilder::and_where_open - Opens a new "AND WHERE (...)" grouping.
- Database_QueryBuilder::or_where_open - Opens a new "OR WHERE (...)" grouping.
- Database_QueryBuilder::where_close - Closes an open "AND WHERE (...)" grouping.
- Database_QueryBuilder::and_where_close - Closes an open "AND WHERE (...)" grouping.
- Database_QueryBuilder::or_where_close - Closes an open "OR WHERE (...)" grouping.
- Database_QueryBuilder::order_by - Applies sorting with "ORDER BY ..."
- Database_QueryBuilder::limit - Return up to "LIMIT ..." results
- Database_QueryBuilder::like - 返回 "LIKE ..."
- Database_QueryBuilder::or_like - 返回 "OR LIKE ..."
- Database_QueryBuilder::mod - 返回 "$column MOD $mod = $value"
- Database_QueryBuilder::or_mod - 返回 "OR $column MOD $mod = $value"
- Database_QueryBuilder::use_index - 使用指定索引
- Database_QueryBuilder::force_index - 强制使用指定索引
- Database_QueryBuilder::ignore_index - 或略指定索引
- Database_QueryBuilder::recovery_last_builder - 恢复最后查询或reset时的Builder数据
- Database_QueryBuilder::expr_value - 创建一个不会被过滤处理的字符串
返回数据库实例化对象
支持 Database::instance('mysqli://root:123456@127.0.0.1/myqee/'); 的方式
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$config_name |
string |
默认值为 Database::DEFAULT_CONFIG_NAME | null |
Database new Database('default');
支持 new Database('mysqli://root:123456@127.0.0.1/myqee/'); 的方式
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$config_name |
string |
默认值为 Database::DEFAULT_CONFIG_NAME | null |
void 获取驱动引擎对象
Database_Driver_MySQLI 获取当前配置数组
array 关闭连接
执行SQL查询
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$sql |
string |
$sql | |
$as_object |
boolean |
返回对象名称 默认false,即返回数组 | bool false |
$use_master |
boolean |
是否使用主数据库,不设置则自动判断,对更新的SQL无效 | null |
Database_Driver_MySQLI_Result 返回当前表前缀
string 解析为SQL语句
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$type |
string |
Select,insert,update,delect,replace | string(6) "select" |
$use_master |
boolean |
当$type=select此参数有效,设置true则使用主数据库,设置false则使用从数据库,不设置则使用默认 | null |
string 获取数据
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$as_object |
boolean |
返回对象名称 默认false,即返回数组 | bool false |
$use_master |
boolean |
是否使用主数据库,不设置则自动判断 | null |
Database_Driver_MySQLI_Result 获取一条数据
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$as_object |
boolean |
返回对象名称 默认false,即返回数组 | bool false |
$use_master |
boolean |
是否使用主数据库,不设置则自动判断 | null |
mixed 最后查询的SQL语句
string 更新数据
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$table |
string |
$table | null |
$value |
array |
$value | null |
$where |
array |
$where | null |
int 作用的行数插入数据
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$table |
string |
$table | null |
$value |
array |
$value | null |
删除数据
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$table |
string |
表名称 | null |
$where |
array |
条件 | null |
integer 操作行数统计指定条件的数量
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$table |
mixed |
Table name string or array(query, alias) | null |
$where |
unknown |
null |
integer 替换数据 replace into
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$table |
string |
$table | null |
$value |
array |
$value | null |
$where |
array |
$where | null |
替换数据 replace into
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$table |
string |
$table | null |
$value |
array |
$value | null |
$where |
array |
$where | null |
获取事务对象
Database_Transaction 事务对象设置是否一直在主数据库上查询
这样设置后,select会一直停留在主数据库上,直到$this->auto_use_master(false)后才会自动判断
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$auto_use_master |
boolean |
$auto_use_master | bool true |
Database 是否一直用主数据库查询
boolean 创建一个数据库
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$database |
string |
$database | |
$charset |
string |
编码,不传则使用数据库连接配置相同到编码 | null |
$collate |
string |
整理格式 | null |
boolean 解析DSN路径格式
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$dsn |
string |
DSN string |
array 关闭全部数据库链接
记录慢查询
boolean 获取Builder配置
可用 $builder = & $obj->get_builder(); 获取到内存指针
array 设置Builder信息
// 设置一样的builder
$db->from('mytable')->where('id>', 10)->limit(10)->order_by('id', 'DESC');
// 获取当前builder
$builder = $db->get_builder();
// 执行查询
$data1 = $db->where('type', 1)->get()->as_array();
echo $db->last_query(); //SELECT * FROM `mytable` WHERE `id` > 10 AND `type` = '1' ORDER BY `id` DESC LIMIT 10
// 将前面获取的builder重新设置回去
$db->set_builder($builder);
// 再次执行另外一个附加条件的查询
$data2 = $db->where('type', 3)->get()->as_array();
echo $db->last_query(); //SELECT * FROM `mytable` WHERE `id` > 10 AND `type` = '3' ORDER BY `id` DESC LIMIT 10
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$builder |
array |
Builder信息数组,不必完整的,建议通过get_builder()获取后设置 |
Database 构成查询 SELECT DISTINCT
如果传的是字符串则构造出 SELECT DISTINCT(test) as test 这样的查询(MySQL)
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$value |
boolean |
Enable or disable distinct columns | bool true |
Database select(c1, c2, c3,......)
如果查询是SELECT * 则不需要设置,系统会自动处理
$db->select('id', 'username')->from('members')->get()->as_array();
echo $db->last_query(); //SELECT `id`, `username` FROM `members`;
$db->select('db1.id', 'db2.username')->from('members as db1')->join('mydb as db2')->on('db1.id', 'db2.mid')->get()->as_array();
echo $db->last_query(); //SELECT `db1`.`id`, `db2`.`username` FROM `members` AS `db1` JOIN ON `db1`.`id` = `db2`.`mid`;
// 使用Database::expr_value()方法可以传入一个不被解析的字符串
$db->select(Database::expr_value('SUM("id") as `id`'))->from('members')->get()->as_array();
echo $db->last_query(); //SELECT SUM("id") as `id` FROM `members`;
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$columns |
mixed |
Column name or array($column, $alias) or object |
Database Choose the columns to select from, using an array.
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$columns |
array |
List of column names or aliases |
Database 查询最大值
$db->select_max('test')->from('db')->group_by('class_id')->get()->as_array();
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$conlumn |
string |
$conlumn |
Database 查询平均值
$db->select_min('test')->from('db')->group_by('class_id')->get()->as_array();
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$conlumn |
string |
$conlumn |
Database 查询平均值
$db->select_avg('test')->from('db')->group_by('class_id')->get()->as_array();
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$conlumn |
string |
$conlumn |
Database 查询总和
$db->select_sum('test')->from('db')->group_by('class_id')->get()->as_array();
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$conlumn |
string |
$conlumn |
Database 高级查询方式
需要相应接口支持, 目前支持MongoDB的aggregation框架Group查询:$sum,$max,$min,$avg,$last,$first等,详情见 http://docs.mongodb.org/manual/reference/aggregation/group/ MySQL支持sum,max,min,svg等
$db->select_adv('test','max'); //查询最大值 $db->seleve_adv('test','sum',3); //查询+3的总和
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$conlumn |
string |
$conlumn | |
$type |
string |
$opt | |
$opt1 |
unknown |
null | |
$opt2 |
unknown |
null |
Database Set the columns that will be inserted.
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$columns |
array |
Column names |
Database 加入多条数据
// 例1
$v1 = array('k1'=>1,'k2'=>1);
$v2 = array('k1'=>2,'k2'=>1);
$v3 = array('k1'=>3,'k2'=>1);
$db->values($v1,$v2,$v3); //加入3行数据
// 例2
$values = array();
$values[] = array('k1'=>1,'k2'=>1);
$values[] = array('k1'=>2,'k2'=>1);
$values[] = array('k1'=>3,'k2'=>1);
$db->values($values); //加入3行数据,等同上面的效果
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$values |
array |
Values list |
Database 为update,insert设置数据
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$pairs |
array |
Associative (column => value) list |
Database Set the value of a single column.
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
mixed |
Table name or array($table, $alias) or object | |
$value |
mixed |
Column value | |
$op |
string |
=|+|- | string(1) "=" |
Database 数据递增
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
string |
$column | |
$value |
int |
$value |
Database 数据递减
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
string |
$column | |
$value |
int |
$value |
Database Sets the table to update.
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$table |
mixed |
Table name or array($table, $alias) or object |
Database from(tableA,tableB,...)
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$tables |
mixed |
Table name or array($table, $alias) or object |
Database Adds addition tables to "JOIN ...".
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$table |
mixed |
Column name or array($column, $alias) or object | |
$type |
string |
Join type (LEFT, RIGHT, INNER, etc) | null |
Database Adds "ON ..." conditions for the last created JOIN statement.
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$c1 |
mixed |
Column name or array($column, $alias) or object | |
$c2 |
string |
Logic operator | |
$op |
mixed |
Column name or array($column, $alias) or object | string(1) "=" |
Database group_by(c1,c2,c3,.....)
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$columns |
mixed |
Column name or array($column, $alias) or object |
Database Alias of and_having()
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | null |
$op |
mixed |
Column value | string(1) "=" |
Database Creates a new "AND HAVING" condition for the query.
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | null |
$op |
mixed |
Column value | string(1) "=" |
Database Creates a new "OR HAVING" condition for the query.
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | null |
$op |
mixed |
Column value | string(1) "=" |
Database Alias of and_having_open()
Database Opens a new "AND HAVING (...)" grouping.
Database Opens a new "OR HAVING (...)" grouping.
Database Closes an open "AND HAVING (...)" grouping.
Database Closes an open "AND HAVING (...)" grouping.
Database Closes an open "OR HAVING (...)" grouping.
Database Start returning results after "OFFSET ..."
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$number |
integer |
Starting result number |
Database 重设数据
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$key |
$key |
不传则全部清除,可选参数 select,select_adv,from,join,where,group_by,having,parameters,set,columns,values,where,index,order_by,distinct,limit,offset,table,last_join,join,on | null |
Database | 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
string |
$key | |
$value |
array |
$value | |
$no_in |
unknown |
bool false |
Database Alias of and_where()
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | null |
$op |
mixed |
Column value | string(1) "=" |
Database Creates a new "AND WHERE" condition for the query.
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | |
$op |
mixed |
Column value | string(1) "=" |
Database Creates a new "OR WHERE" condition for the query.
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | |
$op |
mixed |
Column value | string(1) "=" |
Database Alias of and_where_open()
Database Opens a new "AND WHERE (...)" grouping.
Database Opens a new "OR WHERE (...)" grouping.
Database Closes an open "AND WHERE (...)" grouping.
Database Closes an open "AND WHERE (...)" grouping.
Database Closes an open "OR WHERE (...)" grouping.
Database Applies sorting with "ORDER BY ..."
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$direction |
string |
Direction of sorting | string(3) "ASC" |
Database Return up to "LIMIT ..." results
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$number |
integer |
Maximum results to return | |
$offset |
integer |
Maximum results from offset | null |
Database 返回 "LIKE ..."
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
string |
$column | |
$value |
string |
$value | null |
Database 返回 "OR LIKE ..."
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
string |
$column | |
$value |
string |
$value | null |
Database 返回 "$column MOD $mod = $value"
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
string |
$column | |
$mod_dig |
int |
$mod_dig | |
$value |
int |
$value |
Database 返回 "OR $column MOD $mod = $value"
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$column |
string |
$column | |
$mod_dig |
int |
$mod_dig | |
$value |
int |
$value | |
$op |
unknown |
string(1) "=" |
Database 使用指定索引
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$index |
string |
Database 强制使用指定索引
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$index |
string |
Database 或略指定索引
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$index |
string |
Database 恢复最后查询或reset时的Builder数据
此方法等同于在执行查询前先获取 $builder = $db->get_builder(); 然后执行SQL完毕后把原先的builder重新设置 $db->set_builder($builder);
$db->from('mydb')->where('id', 1)->get()->as_array(); // 执行查询
$db->recovery_last_builder(); // 恢复
等同于下面代码,但明显上面代码更优雅
$db->from('mydb')->where('id', 1);
$builder = $db->get_builder(); // 在执行前获取builder设置
$db->get()->as_array(); // 执行查询
$db->set_builder($builder); // 将前面获取的builder重新复原
例子一
$count = $db->from('mydb')->where('id', 10, '>')->count_records();
// 在执行count_records()时,所有的builder数据将会被清空
echo $db->last_query(); // SELECT COUNT(1) AS `total_row_count` FROM `mydb` WHERE `id` > '10'
// 恢复builder
$db->recovery_last_builder();
$db->limit(20)->order_by('id', 'DESC')->get()->as_array();
echo $db->last_query(); // SELECT * FROM `mydb` WHERE `id` > '10' ORDER BY `id` DESC LIMIT 10
Database 创建一个不会被过滤处理的字符串
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
$string |
string |
Expression |
Database_Expression