boaPHP开发手册v5.5

database类
版本 1.0+
命名空间 boa
文件 boa/database.php
说明 数据库操作类,配置:'DATABASE' => [],
配置
配置项 默认值 类型 说明
driver pdo string 数据库驱动,可选值:pdo,mysqli
prefix string 表前缀
charset utf8 string 数据库字符集,不要请置空
persist false bool 是否持久连接
option [] array 数据库选项,因驱动而异
type mysql string 数据库类型,仅对pdo驱动有效
支持类型参见章节:数据库连接
host localhost 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() 初始化
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();

execute()

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

query()

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

one()

说明
同query(),仅返回一条记录
参数 必须 默认值 类型 说明
$... Y string 动态参数,首个参数为SQL语句,其余为该SQL的替换变量
返回值
如果成功返回一条结果(array),如果失败,在错误返回模式下返回false(bool),否则报错(默认)
示例
$arr = $db->one("SELECT * FROM @bs_news WHERE flag = '0' AND cid = ?", $a);

lastid()

说明
得到最近insert操作的插入行ID或指定字段值
参数 必须 默认值 类型 说明
$name null string 表字段名,如设置则返回该字段值,而非ID(仅pdo驱动支持)
返回值
如设置name参数,则返回name所指定的字段值(string),否则返回ID(int)
示例
$res = $db->table('news')->insert($data);
$id = $db->lastid();

page()

说明
获得查询相关分页数据,给视图类或前端脚本显示分页
参数 必须 默认值 类型 说明
$pagesize 10 int 每页记录数
$sql null string 查询记录总数的SQL,如未指定则依据最近一次select查询解析出相关SQL
返回值
返回分页数据(array),主要包含字段:total(记录总数)、pagesize(每页记录数)、pages(总页数)、current(当前页)
示例
$arr = $db->query('SELECT * FROM ...'); // 得到查询结果
$data = $db->page(); // 得到分页数据,交由视图类或前端JS渲染分页

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)
示例
见 select()

select()

说明
在SQL构造中执行查询操作
返回值
如果成功返回查询结果(array),如果失败,在错误返回模式下返回false(bool),否则报错(默认)
示例
$res = $db->table('news A')
->field('A.*, B.category AS cat_name')
->join('category B', 'A.cid = B.id')
->where('A.cid = ? AND A.status = ?', $cid, $status)
->limit(50, 10)
->order('A.sort ASC, A.id DESC')
->select();

find()

说明
同select(),仅返回一条记录
返回值
如果成功返回一条结果(array),如果失败,在错误返回模式下返回false(bool),否则报错(默认)
示例
$arr = $db->table('news')->where('id = ?', $id)->find(); // 得到单条记录

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 = ?', $id)->update(['title'=>$title, 'content'=>$content]);

delete()

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