项目文件目录
project/ -app -conf
1、数据库配置
方式一 配置文件
conf/database.php
<?php return [ 'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'root', 'username' => 'root', 'password' => '123456', 'hostport' => '3306', 'charset' => 'utf8' ];
方式二:控制函数
app\index\controller\Index.php
namespace app\index\controller; use think\Db; class Index { public function index() { $db = Db::connect([ 'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'root', 'username' => 'root', 'password' => '123456', 'hostport' => '3306', 'charset' => 'utf8' ]); dump($db); } }
方式三 DSN方式 Data Source Name
$db = Db::connect('mysql://root:123456@127.0.0.1:3306/demo#utf8');
方式四 从读取配置
conf/config.php
<?php return [ 'db_config' => [ 'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'root', 'username' => 'root', 'password' => '123456', 'hostport' => '3306', 'charset' => 'utf8' ] ];
app\index\controller\Index.php
$db = Db::connect('db_config'); // 或者 use think/Config; $db = Db::connect(Config::get('db_config'));
2、获取数据表对象
$bd = Db::table('pre_user') # Db是单例模式 $bd = Db::name('user') # 会自动添加前缀 # 助手函数 db 每次调用实例化false取消每次实例化 $bd = db('pre_user', [], false)
3、查询数据
// 检查数据库配置 dump(config('database')); // 使用sql语句查询 $res = Db::query("select * from student"); $res = Db::query("select * from student where id=?", [1]); // 插入数据 返回影响条数 $res =Db::execute("insert into student set name=?, age=?", ['Tom',23]); // select 返回所有记录 二维数组 [] $res = Db::table('student')->select(); // column 返回所有列记录 二维数组 NULL # 如果存在第二个参数,为key值 $res = Db::table('student')->column('age', 'name'); // find 返回一条记录 一维数组 NULL $res = Db::table('student')->find(); // value 返回一条记录中的某个字段 NULL $res = Db::table('student')->value('name');
4、插入数据
$db = Db::table('student');
#insert 返回值是影响记录的行数,插入数 $res = $db->insert([ 'name' => 'Tom', 'age' => 23 ]); #insetGetId 返回值插入数据的自增id $res = $db->insertGetId([ 'name' => 'Tom', 'age' => 23 ]); #insertAll 返回插入数据成功的行数 $data = []; for ($i=0; $i<10; $i++) { $data[] = [ 'name' => "Tom{$i}", 'age' => 23 ]; }; $res = $db->insertAll($data);
5、更新数据
# update 更新多个字段 返回影响行数 $res = $db->where([ 'id'=>1 ])->update([ 'name'=> '王小二' ]); # setField 更新一个字段 返回影响行数 $res = $db->where([ 'id' => 1 ])->setField('name', '王大锤'); # setInc 自增 返回影响行数 $res = $db->where([ 'id' => 1 ])->setInc('age'); # setDec 自减 返回影响行数 $res = $db->where([ 'id' => 1 ])->setDec('age');
6、删除数据
# 条件删除,返回影响行数 $res = $db->where( ['id'=>1] )->delete(); # 传入主键删除 返回影响行数 $res = $db->delete(2); # 清空数据 $res = $db->where('1=1')->delete();
7、条件构造器
buildSql();返回SQL语句
where(‘字段名’,‘表达式’,‘查询条件’);
$db->where()->buildSql(); # 构造条件 $res = $db ->where('id', 'in', [1, 2, 3]) ->whereOr('id', '<', '4') ->buildSql(); // string(62) "( SELECT * FROM `student` WHERE `id` IN (1,2,3) OR `id` < 4 )"
链式操作
$res = Db::table('user') ->where('id', '>', 10) ->field('name', 'id') ->order('id DESC') // ->limit(3, 5) // ->page(3, 5) // limit((3-1)*5, 5) ->group('`group`') ->select();