多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 连接数据库 * 全局配置 在config目录下的database.php中配置。 * 动态配置 用think\\db\\Query.php中的connect()方法 ``` Db::connect(\[ 'type' => 'mysql', 'hostname' => 'localhost', 'database' => 'demo', 'username' => 'root', 'password' => '123456', \])->table('student')->select() ``` * DSN连接 数据库类型://用户名:密码@数据库地址:端口号/数据库名称#字符集 ``` Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8') \->table('user') \->find(); ``` * 单独配置 在confi目录中创建一个index目录,它对应的是application下的controller中的Index控制器 * 数据库操作 查询构造器:需要注意的是如果设置了表前缀,在Db查询时用name,Db::name('表名'),反之Db::table('表名')。 将config目录下的app.php中的'app\_debug' => true,'app\_trace'=> true,打开,可以进行调试。 * Db是静态调用 **单条查询(find),返回一维数组** > Db::table(表名)->where(条件)->find(); > where单个条件使用表达式,多个条件使用数组\['字段名', '=', '值'\],\['字段名', '>', '值'\]。 > field('id,name,add\_time')#指定字段, > field(\['id'=>'编号','name'=>'名称'\])#给字段起别名, > 如果是根据主键id来查询,where可以省略,直接将id的值放在find(5)中。 **多条查询(select),返回二维数组** > 将find换成select。 **单条插入(insert),返回布尔类型** $data = \['foo' => 'bar', 'bar' => 'foo'\]; Db::name('user')->insert($data); 如果是mysql数据库,支持replace写入,例如 $data = \['foo' => 'bar', 'bar' => 'foo'\]; Db::name('user')->insert($data, true); #多个参数true **过滤数据插入** Db::name('user')->data($data)insert();//不支持传入参数true ### 插入的同时返回主键ID Db::name('user')->insertGetId($data); ### 多条插入(insertAll)返回添加成功的条数 ``` $data =[ ['foo' => 'bar', 'bar' => 'foo'\], ['foo' => 'bar1', 'bar' => 'foo1'\], ['foo' => 'bar2', 'bar' => 'foo2'\] ]; Db::name('user')->insertAll($data); ``` 如果是mysql数据库,支持replace写入(用data()方法)。 ### 更新(必须有条件)返回影响数据的条数,没修改任何数据返回 0 ``` Db::name('user') ->where('id', 1) ->update(\['name' => 'thinkphp'\]); ``` 如果数据中包含主键,可以直接使用: Db::name('user')->update(\['name' => 'thinkphp','id'=>1\]); ### 删除(delete)返回影响数据的条数,没有删除返回 0 Db::table('think\_user')->delete(1); Db::table('think\_user')->delete(\[1,2,3\]); ### 条件删除 Db::table('think\_user')->where('id',1)->delete(); Db::table('think\_user')->where('id','delete(); ### 原生查询(query)如果数据非法或者查询错误则返回false,否则返回查询结果数据集(同select方法) Db::query("select \* from think\_user where status=1"); ### 原生增改删(execute)如果数据非法或者查询错误则返回false,否则返回影响的记录数 Db::execute("update think\_user set name='thinkphp' where status=1"); * 参数绑定,支持在原生查询的时候使用参数绑定,包括问号占位符或者命名占位符 ``` Db::query("select \* from think\_user where id=? AND status=?", \[8, 1\]); ``` * 命名绑定 ``` Db::execute("update think\_user set name=:name where status=:status", \['name' => 'thinkphp', 'status' => 1\]); ``` > *注:find 和 select 方法返回的都是数组,区别在于后者是二维数组。*