# 核心操作 数据库查询构造器 (query builder) 提供方便、流畅的接口,用来建立及执行数据库查找语法。在你的应用程序里面,它可以被使用在大部分的数据库操作,而且它在所有支持的数据库系统上都可以执行。 HDPHP 框架的 CURD 的自由度超过你的想象,当开启 DEBUG 模式后,所有 SQL 语句问题均会在页面中显示,一目了然。 > 注意: HDPHP 查询构造器使用 PDO 参数绑定,以保护应用程序免于 SQL 注入,因此传入的参数不需额外转义特殊字符。 [TOC] ## 预准备操作 HDPHP支持使用预准备查询,可以完全避免SQL注入。 #### 修改操作 ``` Db::execute("update news set total=:total where id=:id",[':total'=>5,':id'=>1]); ``` ## 查询操作 ##### 使用标识名 ``` Db::query("select * from site where siteid=:siteid AND name=:name", [':siteid'=>36,':name'=>'后盾']); ``` ##### 使用占位符 ``` Db::query("select * from news where title like ?",['%后盾网%']) ``` ## 常用操作 #### 查找 下面是使用原生 SQL 语句进行查询,更灵活的方式请查看 查询构造器 部分 ``` Db::table('user')->where('id','>',1)->get(); ``` #### 新增 ``` Db::table('user')->insert(['username'=>'向军','qq'=>'2300071698']); //数组数据会过滤掉非法字段 ``` #### 不存在时新增 ``` $user = Db::table('user')->firstOrCreate(['username' => '李四'],['username'=>'李四','age'=>22]); //如果不存在叫 “李四” 的用户就新增用户 ``` #### 替换 ``` Db::table('user')->replace(['id'=>1,'username'=>'向军','qq'=>'2300071698']); //如果字段中有主键或唯一索引,并且数据存在,replace操作将执行替换当前记录的操作 ``` #### 添加并获取自增主键 如果数据表有自动递增的ID,可以使用 insertGetId 添加数据并返回该 ID ``` Db::table('user')->insertGetId(['username'=>'向军','qq'=>'2300071698']); ``` #### 更新 ``` Db::table('user')->where("id",1)->update(['username'=>'后盾网']); //数组数据会过滤掉非法字段 ``` #### 删除 ``` Db::table('user')->where('id',1)->delete(); //删除指定的主键值 Db::table('user')->delete(1); Db::table('user')->delete([2,3,5]); ``` #### 自增一个字段值 将total字段值加2 ``` Db::table("user")->where('id',1)->increment('total',2); ``` #### 自减一个字段值 ``` Db::table("user")->where('id',1)->decrement('total',2); 将total字段减少2 ``` #### 获取自增主键 ``` $db = Db::table( 'news' ); $db->insert( [ 'title' => '后盾网' ] ); echo $db->getInsertId(); ``` #### 获取受影响条数 ``` $db = Db::table( 'news' ); $db->update( [ 'title' => '后盾人' ] ); echo $db->getAffectedRow(); ```