boa框架开发手册v5.2

database类
版本 1.0+
命名空间 boa
文件 boa/database.php
说明 数据库操作类,配置:'DATABASE' => [],
配置
配置项 默认值 类型 说明
driver pdo string 数据库驱动,可选值:pdo,mysqli
prefix bs_ string 表前缀
charset utf8 string 数据库字符集,不要请置空
persist false bool 是否持久连接
option [] array 数据库选项,因驱动而异
type mysql string 数据库类型,仅对pdo驱动有效
支持:mysql,sqlsrv,oci,pgsql,ibm,sqlite,sqlite2,odbc,firebird,cubrid,4D
host 127.0.0.1 string 数据库主机
port 3306 int 数据库端口
name string 数据库名称
user null string 数据库用户
pass null string 数据库密码
master [] array 主数据库(集),如设置此项,则表示开启读写分离主从模式,单例模式无需设置。
里面可以直接设置一组服务器信息,也可以设置多组服务器信息(二维数组)。
一组完整设置应该包含:type,charset,persist,option,host,port,name,user,pass字段,
省略的字段系统则使用上面相应的默认字段替代
slave [] array 从数据库(集),含义同master
hashtype 0 int 主从模式哈希计算方式,可选值:0=取模,1=随机
目录
方法 说明
__construct() 初始化
set_return() 开启/关闭错误返回模式,开启后查询出错时返回false,而不是直接报错,默认关闭
get_error() 错误返回模式下,在SQL查询出错后可以使用此方法获取错误详情
execute() 无结果集的SQL查询(insert,update,delete等),会产生一条info日志
query() 带结果集的SQL查询(select等),会产生一条info日志
one() 同query(),仅返回一条记录
lastid() 得到最近insert操作的插入行ID或指定字段值
page() 获得查询相关分页数据,给视图类或前端脚本显示分页
begin() 事务开启,同时开启错误返回模式
commit() 事务提交,同时关闭错误返回模式
rollback() 事务回滚,同时关闭错误返回模式
stmt_execute() 无结果集的预处理查询初始化(insert,update,delete等)
stmt_query() 带结果集的预处理查询初始化(select等)
table() 初始化查询构造器类,准备构造一条SQL语句
__call() 魔术方法,映射到查询构造器类中方法,设置SQL语句的各个属性,详见builder类
select() 在SQL构造中执行查询操作
find() 同select(),仅返回一条记录
insert() 在SQL构造中执行插入操作
update() 在SQL构造中执行更新操作
delete() 在SQL构造中执行删除操作
方法

__construct()

说明
初始化
参数 必须 默认值 类型 说明
$cfg [] array 配置数据
示例
$db = boa::db();

set_return()

说明
开启/关闭错误返回模式,开启后查询出错时返回false,而不是直接报错,默认关闭
参数 必须 默认值 类型 说明
$val true bool 是否开启错误返回模式

get_error()

说明
错误返回模式下,在SQL查询出错后可以使用此方法获取错误详情
返回值
返回错误信息(string)

execute()

说明
无结果集的SQL查询(insert,update,delete等),会产生一条info日志
参数 必须 默认值 类型 说明
$... Y string 动态参数,首个参数为SQL语句,其余为该SQL的替换变量
返回值
如果成功返回受影响行数(int),如果失败,在错误返回模式下返回false(bool),否则报错(默认)
示例
//UPDATE @bs_news SET title = 'Title', content = 'Content' WHERE id = '1'

$db = boa::db();
$sql = 'UPDATE @bs_news SET title = ?, content = ? WHERE id = ?';
$res = $db->execute($sql, 'Title', 'Content', 1);
$res = $db->execute($sql, ['Title', 'Content'], 1);
$res = $db->execute($sql, ['Title', 'Content', 1]);

query()

说明
带结果集的SQL查询(select等),会产生一条info日志
参数 必须 默认值 类型 说明
$... Y string 动态参数,首个参数为SQL语句,其余为该SQL的替换变量
返回值
如果成功返回查询结果(array),如果失败,在错误返回模式下返回false(bool),否则报错(默认)
示例
$arr = boa::db()->query("SELECT * FROM @bs_news WHERE id < '10'");

one()

说明
同query(),仅返回一条记录
参数 必须 默认值 类型 说明
$... Y string 动态参数,首个参数为SQL语句,其余为该SQL的替换变量
返回值
如果成功返回一条结果(array),如果失败,在错误返回模式下返回false(bool),否则报错(默认)

lastid()

说明
得到最近insert操作的插入行ID或指定字段值
参数 必须 默认值 类型 说明
$name null string 表字段名,如设置则返回该字段值,而非ID(仅pdo驱动支持)
返回值
如设置name参数,则返回name所指定的字段值(string),否则返回ID(int)

page()

说明
获得查询相关分页数据,给视图类或前端脚本显示分页
参数 必须 默认值 类型 说明
$pagesize 10 int 每页记录数
$sql null string 查询记录总数的SQL,如未指定则依据最近一次select查询解析出相关SQL
返回值
返回分页数据(array),主要包含字段:total(记录总数)、pagesize(每页记录数)、pages(总页数)、current(当前页)

begin()

说明
事务开启,同时开启错误返回模式
返回值
成功返回true,失败返回false

commit()

说明
事务提交,同时关闭错误返回模式
返回值
成功返回true,失败返回false

rollback()

说明
事务回滚,同时关闭错误返回模式
返回值
成功返回true,失败返回false

stmt_execute()

说明
无结果集的预处理查询初始化(insert,update,delete等)
参数 必须 默认值 类型 说明
$sql Y string 含?占位符的SQL模板
返回值
返回预处理查询类实例(object)
示例
$data = [
	[1, 'Title1', 'Content1'],
	[2, 'Title2', 'Content2'],
	[3, 'Title3', 'Content3']
];

$stmt = boa::db()->stmt_execute('INSERT INTO @bs_news (id, title, content) VALUES (?, ? ,?)');
foreach($data as $v){
	$stmt->execute($v, 'iss');
}

stmt_query()

说明
带结果集的预处理查询初始化(select等)
参数 必须 默认值 类型 说明
$sql Y string 含?占位符的SQL模板
返回值
返回预处理查询类实例(object)
示例
$stmt = boa::db()->stmt_query('SELECT * FROM @bs_news WHERE id = ?');
$stmt->execute(1, 'i');
$rs = $stmt->one();

table()

说明
初始化查询构造器类,准备构造一条SQL语句
参数 必须 默认值 类型 说明
$table Y string 要操作的数据表名,支持别名
返回值
返回$this(object)

__call()

说明
魔术方法,映射到查询构造器类中方法,设置SQL语句的各个属性,详见builder类
参数 必须 默认值 类型 说明
$name Y string 查询构造器类中方法名
$args Y string 对应方法参数
返回值
返回$this(object)
示例
$res = boa::db()->table('news A')
->field('A.*, B.category AS cat_name')
->join('category B', 'A.cid = B.id')
->where('A.cid = ? AND A.status = ?', 9, 1)
->limit(50, 10)
->order('A.sort ASC, A.id DESC')
->select();

select()

说明
在SQL构造中执行查询操作
返回值
如果成功返回查询结果(array),如果失败,在错误返回模式下返回false(bool),否则报错(默认)

find()

说明
同select(),仅返回一条记录
返回值
如果成功返回一条结果(array),如果失败,在错误返回模式下返回false(bool),否则报错(默认)

insert()

说明
在SQL构造中执行插入操作
参数 必须 默认值 类型 说明
$data Y array 要插入的数据
返回值
如果成功返回插入行ID(int),如果失败,在错误返回模式下返回false(bool),否则报错(默认)
示例
$res = boa::db()->table('news')->insert(['title'=>'Title', 'content'=>'Content']);

update()

说明
在SQL构造中执行更新操作
参数 必须 默认值 类型 说明
$data Y array 要更新的数据
返回值
如果成功返回受影响的行数(int),如果失败,在返错误回模式下返回false(bool),否则报错(默认)
示例
$res = boa::db()->table('news')->where('id = ?', 1)->update(['title'=>'Title', 'content'=>'Content']);

delete()

说明
在SQL构造中执行删除操作
返回值
如果成功返回受影响的行数(int),如果失败,在错误返回模式下返回false(bool),否则报错(默认)
示例
$res = boa::db()->table('news')->where('id = ?', 1)->delete();