1、为了简化数据库操作,calfbb默认开启了函数式数据库操作,你可以在php脚本里任意一个位置使用封装的函数操作数据库
2、calfbb框架数据库底层采用pdo封装,函数式操作数据库指在简化开发人员开发系统难度,提高效率。
* 增加表前缀
* [table_prefix](https://www.kancloud.cn/calfbaby/calfbb/419278#table_prefix)
* 数据库基本操作
[* db_has](https://www.kancloud.cn/calfbaby/calfbb/419278#db_has)
[* db_find](https://www.kancloud.cn/calfbaby/calfbb/419278#db_find)
* [db_insert](https://www.kancloud.cn/calfbaby/calfbb/419278#db_insert)
* [db_update](https://www.kancloud.cn/calfbaby/calfbb/419278#db_update)
* [db_delete](https://www.kancloud.cn/calfbaby/calfbb/419278#db_delete)
* [db_select](https://www.kancloud.cn/calfbaby/calfbb/419278#db_select)
* [db_fetch](https://www.kancloud.cn/calfbaby/calfbb/419278#db_fetch)
* [db_fetchall](https://www.kancloud.cn/calfbaby/calfbb/419278#db_fetchall)
* [db_query](https://www.kancloud.cn/calfbaby/calfbb/419278#db_query)
* [db_id](https://www.kancloud.cn/calfbaby/calfbb/419278#db_id)
* 聚合查询
* [db_count](https://www.kancloud.cn/calfbaby/calfbb/419278#db_count)
* [db_max](https://www.kancloud.cn/calfbaby/calfbb/419278#db_max)
* [db_min](https://www.kancloud.cn/calfbaby/calfbb/419278#db_min)
* [db_avg](https://www.kancloud.cn/calfbaby/calfbb/419278#db_avg)
* 调试
* [db_sql](https://www.kancloud.cn/calfbaby/calfbb/419278#db_sql)
增加表前缀
### <span id = "table_prefix"> table_prefix() </span>
调用该函数以后,如果数据库配置文件有配置表前缀,会自动加入表前缀。
~~~
$tablename = table_prefix('users');
echo $tablename;
//输出 calf_users
~~~
数据库基本操作
#### <span id = "table_prefix"> db_has() </span> 判断记录是否存在
* $tablename 参数指定要查询的数据表名,此处传入的表名不要使用table_prefixe()函数
* $fields 参数指定查询返回的字段列表默认全部 指定字段传入索引数组
* $where 参数指定查询的条件
~~~
db_has($tablename, $where = []);
return boolean
~~~
#### 示例:
~~~
//根据uid为3的用户记录是否存在
$user = db_find('users',['uid' => 3]);
if ($user) {
echo 存在;
}
~~~
#### <span id = "db_find"> db_find() </span> 查询单条记录
* $tablename 参数指定要查询的数据表名,此处传入的表名不要使用table_prefixe()函数
* $fields 参数指定查询返回的字段列表默认全部 指定字段传入索引数组
* $where 参数指定查询的条件
~~~
db_find($tablename, $fields = "*",$where = []);
return array | boolean
~~~
#### 示例:
~~~
//根据uid获取用户的用户名和用户Id信息
//生成的SQL等同于:SELECT username, uid FROM calf_users WHERE uid = '1' LIMIT 1
$user = db_find('users',['uid','username'],['uid' => 1]);
//生成的SQL等同于:SELECT * FROM ims_users WHERE username = 'mizhou' AND status = '1' LIMIT 1
$user = db_find('users','*',['username'=> 'mizhou' ,'status'=>1]);
~~~
#### <span id = "db_insert"> db_insert() </span> 添加纪录
对指定数据表插入一条新记录
$tablename 参数指定要插入记录的数据表名,此处传入的表名不要使用tablename()函数
$data 参数指定要插入的记录,格式为与数据表字段对应的关联数组
~~~
db_insert($tablename, $data=[]);
return int | boolean
~~~
#### 示例:
~~~
//添加一条用户记录,并判断是否成功
$user_data = array(
'username' => 'mizhou1',
'status' => '1',
);
$result = db_insert('users', $user_data);
if (!empty($result)) {
$uid = $result;
echo '添加用户成功UID为' . $uid;
}
~~~
#### <span id = "db_update"> db_update() </span> 更新记录
更新指定的数据表的记录
$tablename 参数指定要插入记录的数据表名,此处传入的表名不要使用tablename()函数
$data 参数指定要插入的记录,格式为与数据表字段对应的关联数组
$where 参数指定的条件
~~~
db_update($tablename, $data = [],$where = [])
return boolean
~~~
#### 示例:
~~~
//更uid等于2的用户的用户名
$user_data = array(
'username' => 'mizhou2',
);
$result = db_update('users', $user_data, array('id' => 2));
if (!empty($result)) {
echo '更新成功';
}
~~~
#### <span id = "db_delete"> db_delete() </span> 删除记录
更新指定的数据表的记录
$tablename 参数指定要插入记录的数据表名,此处传入的表名不要使用tablename()函数
$where 参数指定的条件
~~~
db_delete($tablename, $where = [])
return int | boolean //如果更新成功 返回影响行数
~~~
#### 示例:
~~~
//删除用户名为mizhou2的记录
$result = db_delete('users', array('username' => 'mizhou2'));
if (!empty($result)) {
echo '删除成功';
}
~~~
#### <span id = "db_select"> db_select() </span> 查询多条记录
更新指定的数据表的记录
$tablename 参数指定要插入记录的数据表名,此处传入的表名不要使用tablename()函数
$fields array ['id','name'] 返回字段
$where array 参数指定的条件
$page int 当前页数
$pagesize int 每页数量
$orderby array 排序 ['id'=>'DESC']
~~~
db_select($tablename, $fields = "*",$where = [],$page=1,$pagesize=10,$orderby=[])
~~~
#### 示例:
~~~
//删除用户名为mizhou2的记录
$result = db_select(self::$tableName,$fields = "*",$where,$data['current_page'],$data['page_size'],$orderby=['sort'=>'DESC']);
~~~
#### <span id = "db_fetch"> db_fetch() </span>
更新指定的数据表的记录
$sql 参数指定要返回记录集的SQL语句
$params 参数指定为SQL语句中的参数绑定传值,防止SQL注入
需要注意的是使用参数绑定时,SQL语中等号后不需要使用引号,传入的值必须与绑定的名称一致
~~~
db_fetch($sql, $params = array());
return array | boolean
~~~
#### 示例:
~~~
// :uid 是参数的一个占位符,没有使用引号,传入的第二个参数中要与SQL中的占位名称相同
$user = db_fetch("SELECT username, uid FROM ".tablename('users')." WHERE uid = :uid LIMIT 1", array(':uid' => 1));
// LIKE 占位的使用方法
$user = db_fetch("SELECT * FROM ".tablename('users')." WHERE username LIKE :username", array(':username' => '%mizhou%'));
~~~
#### <span id = "db_fetchall"> db_fetchall() </span>
根据SQL语句,查询全部记录,使用方法与db_fetch相同
$sql 参数指定要返回记录集的SQL语句
$params 参数指定为SQL语句中的参数绑定传值,防止SQL注入
需要注意的是使用参数绑定时,SQL语中等号后不需要使用引号,传入的值必须与绑定的名称一致
~~~
db_fetchall($sql, $params = array());
return array | boolean
~~~
#### 示例:
~~~
// :uid 是参数的一个占位符,没有使用引号,传入的第二个参数中要与SQL中的占位名称相同
$user = db_fetchall("SELECT username, uid FROM ".tablename('users')." WHERE uid = :uid LIMIT 1", array(':uid' => 1));
// LIKE 占位的使用方法
$user = db_fetchall("SELECT * FROM ".tablename('users')." WHERE username LIKE :username", array(':username' => '%mizhou%'));
~~~
#### <span id = "db_query"> db_query() </span>
运行一条SQL语句
$sql 参数指定要返回记录集的SQL语句
$params 参数指定为SQL语句中的参数绑定传值,防止SQL注入
需要注意的是使用参数绑定时,SQL语中等号后不需要使用引号,传入的值必须与绑定的名称一致
~~~
db_query($sql, $params = array());
return array | boolean
~~~
#### 示例:
~~~
//更uid等于2的用户的用户名
$result = db_query("UPDATE ".tablename('users')." SET username = :username, age = :age WHERE uid = :uid", array(':username' => 'mizhou2', ':age' => 18, ':uid' => 2));
//删除用户名为mizhou2的记录
$result = db_query("DELETE FROM ".tablename('users')." WHERE uid = :uid", array(':uid' => 2));
if (!empty($result)) {
message('删除成功');
}
~~~
#### <span id = "db_id"> db_id() </span>
获取最近一条insert 插入记录的自增id 注意只能insert操作有效
~~~
db_id();
return int
~~~
#### 示例:
~~~
db_query('INSERT INTO user (username, password) VALUES (:username, :password)',[':username'=>'2dd','password'=>'123213']);
$insert_id=db_id();
var_dump($insert_id);
//输出插入的自增id
~~~
#### <span id = "db_sql"> db_sql() </span>
获取执行的sql语句,
~~~
db_sql(true);//true 代表获取执行的所有sql语句,默认false,只获取最后一条
return stirng || array;
~~~
#### 示例:
~~~
$data=db_insert('user',['username'=>123,'password'=>'1231232']);
$sql=db_query('INSERT INTO user (username, password) VALUES (:username, :password)',[':username'=>'2dd','password'=>'123213']);
$sql=db_fetch("select * from users id=:id",[':id'=>'11']);
$debug=db_sql(true);
~~~
#### 输出:
~~~
Array
(
[0] => INSERT INTO user (username, password) VALUES (123, '1231232')
[1] => INSERT INTO user (username, '123213') VALUES ('2dd', '123213')
[2] => select * from users id='11'
)
~~~
~~~
~~~
- 框架介绍
- 初衷
- 简介
- 目录结构
- 开发规范
- 后端规范
- 数据库设计规范
- 数据库
- 函数操作数据库
- Medoo操作数据库
- pdo操作数据库
- ORM
- 配置文件
- 主配置文件
- 数据库配置文件
- 文件上传配置文件
- 路由配置文件
- 模块独立配置文件
- 视图
- 视图说明
- 常用标签
- include
- if-else
- for
- G.url
- 大G
- 路由
- 普通模式
- 伪静态模式
- 兼容模式
- 自定义路由
- 全局常量
- 全局函数
- p
- show_json
- error
- success
- url
- 类库
- 验证类
- 文件类
- file_upload上传
- file_image_thumb缩略
- file_image_crop裁剪
- 缓存类
- 日志类
- 扩展
- 插件应用
- 模版