预处理查询
预处理查询对于批量查询性能较好
初始化语句
有结果集的预处理查询类初始化:
$stmt = boa::db()->stmt_query("SELECT * FROM @bs_news WHERE id = ?");
无结果集的预处理查询类初始化:
$stmt = boa::db()->stmt_execute('UPDATE @bs_news SET title = ?, content = ? WHERE id = ?');
参数类型
绑定参数时,每个参数需要指定一个类型,没有指定的默认为s,将其按次序拼接成一个字符串。主要有以下4个类型:
- i :整型(integer)
- d :双精度浮点型(double)
- b :二进制大对象(blob)
- s :字符串型(string)
批量查询
准备好一次SQL模板,可以循环使用execute()绑定参数并执行
$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'); // 第二个参数为变量的参数类型按次序拼接
}
获取查询结果
all()方法可以获得整个查询结果,one()方法仅获取一条记录
$stmt = boa::db()->stmt_query('SELECT * FROM @bs_news WHERE cid = ?');
$stmt->execute([10], 'i');
$arr = $stmt->all();