## 查询构造器 除了原生查询外,5.0还提供了数据库查询构造器,可以更方便执行数据库操作,查询构造器基于PDO实现,对不同的数据库驱动都是统一的语法。 >[danger]#### 注意: > * * * * * > ThinkPHP `5.0`查询构造器使用 `PDO `参数绑定,以保护应用程序免于 `SQL`注入,因此传入的参数不需额外转义特殊字符。 同样是实现上面的功能,我们可以改成: ~~~ // 插入记录 Db::table('think_data') ->insert(['id' => 18, 'name' => 'thinkphp', 'status' => 1]); // 更新记录 Db::table('think_data') ->where('id', 18) ->update(['name' => "hello"]); // 查询数据 $list = Db::table('think_data') ->field('name,email') ->where('id', 18) ->select(); // 删除数据 Db::table('think_data') ->where('id', 18) ->delete(); ~~~ 由于我们在数据库配置文件中设置了数据表的前缀为`think_`,因此,`table`方法可以改成`name`方法,这样就不会因为数据表前缀的修改而改动`CURD`代码,例如: ~~~ // 插入记录 Db::name('data') ->insert(['id' => 18, 'name' => 'thinkphp']); // 更新记录 Db::name('data') ->where('id', 18) ->update(['name' => "framework"]); // 查询数据 $list = Db::name('data') ->where('id', 18) ->select(); dump($list); // 删除数据 Db::name('data') ->where('id', 18) ->delete(); ~~~ 如果使用系统提供的助手函数`db`则可以进一步简化查询代码如下: ~~~ $db = db('data'); // 插入记录 $db->insert(['id' => 20, 'name' => 'thinkphp']); // 更新记录 $db->where('id', 20)->update(['name' => "framework"]); // 查询数据 $list = $db->where('id', 20)->select(); dump($list); // 删除数据 $db->where('id', 20)->delete(); ~~~ >[danger] `db`助手函数在`V5.0.9`之前版本默认会每次重新连接数据库,因此应当尽量避免多次调用。 关于更多的查询条件和查询语法,会在后面一章查询语言中详细讲述。