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' ) ~~~ ~~~ ~~~