1、连接数据库
// +----------------------------------------------------------------------
// | 数据库设置
// +----------------------------------------------------------------------
return [
// 数据库类型
'type' => 'mysql',
// 数据库连接DSN配置
'dsn' => '',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => '',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => false,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型
'resultset_type' => 'array',
// 自动写入时间戳字段
'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
'sql_explain' => false,
// Builder类
'builder' => '',
// Query类
'query' => '\\think\\db\\Query',
];
2、数据的查询
方式一:Db::query()
方式二:Db::execute(“sql语句”);
方式三:通过表选择查询
表选择:Db::table(‘表名’)->select(); //返回全部记录
也可以带上条件返回:$rs=Db::table(‘sess’)->where([‘sess_id’=>‘100’])->select();
方式四:
$ rs=Db::table(‘表名’)->find(); ,只返回一条记录,默认返回第一条。
也可以带上条件:$rs=Db::table(‘表名’)->where([‘sess_id’=>‘100’])->find();
方式五:查询某个字段值,只返回一条记录
$rs=Db::table(‘表名’)->value(‘字段名’);
也可以带上条件: $ rs=Db::table(‘表名’)->where([‘sess_id’=>‘100’])->value();
方式六:查询某些列(返回多个结果)的值
$rs=Db::table(‘md_area’)->column(‘areaName’,…);
也可以带上条件:$rs=Db::table(‘md_area’)->where([‘Id’=>‘1’])->column(‘areaName’);
3、添加数据
方式一:insert()
$db=Db::name('md_country');
$res=$db->insert([
'countryCode' =>'US',
'countryName' =>'美国'
]);
通过这种方式,可以获取返回值,值为自增的ID,这个在实际工作中很有用。
$res=$db->insertGetId([
'countryCode' =>'US',
'countryCode' =>'美国'
]);
方式二:批量插入数据:insertAll(数组); 返回的是一个插入的数据行数,不是bool值,注意一下。
$db=Db::name('md_country');
$data=[];
for($i=0;$i<10;$i++){
$data[]=[
'countryCode' =>"C{$i}",
'countryName' =>"国家{$i}"
];
}
$res=$db->insertAll($data);
4、数据更新
方式一:update() ,更新多个字段
$res=$db->where([
'id' =>2
])->update([
'username' =>'jim',
'email' =>'[email protected]'
]);
方式二:setField() 仅仅更新一个字段
$res=$db->where([
'id' =>2
])->setField('username','jim');
方式三:setInc();增加字段值,每更新一次加X
$res=$db->where([
'id' =>2
])->setInc('num',X);
方式四:setDec() 减少值,每更新一次减少X
$res=$db->where([
'id' =>2
])->setDec('num',X);
5、数据删除
方式一:delete()
根据条件删除相应数据
$res=$db->where([
'id' =>2
])->delete();
根据主键值删除相应数据
$res=$db->delete(2);
删除所有数据,谨慎使用
$res=$db->where( '1' ='1')->delete();
where(‘id’,“EQ”,1)
条件包含:
EQ:=
NEQ:<>
LT:<
ELT:<=
GT:>
EGT:>=
BETWEEN BETWEEN * AND *
NOTBETWEEN NOTBETWEEN * AND *
IN IN(* , *)
NOTIN NOT IN( * , *)
多个条件这么弄?
$res=$db
->where("id","in","1,2,3")
->whereOr("username","eq","123444")
->whereOr("num","lt","10")
->where("","")
])->buildsql();
$res=Db::table('area')
->where("id",">","10")
->field("username,id")
->order("id DESC")
->limit(3,5)
->select();
1、模型建立
模型的路径及命名:
模型在模块下建立文件夹model,
模型文件命名以数据表名命名,采用骆驼命名法,首字母大写,比如web_user的模型名称是User.
user_infor: UserInfor, 正所谓一张数据表就对应一个模型。
在控制器中调用模型:
toArray();
dump($res);
}
}
2、使用模型查询数据
toArray();
dump($res);
}
}
class Index extends Controller
{
public function index()
{
$res= MdArea::where("id",12)
->filed("user,email")
->find()
$res=$res->toArray();
dump($res);
}
}
方式一:主键查询
$res=MdArea::all("1,2,3");
foreache($res as $val){
dump($val->toArray());
}
方式二:闭包函数
$res=MdArea::all(function($query){
$query->where("id","<",5)
->field("id,email");
});
$res=MdArea::where("id",">","15")
->field("username,email")
->limit(3)
->order("id DESC")
->select();
foreache($res as $val){
dump($val->toArray());
}
$res=MdArea::where("id",10)value("email");
dump($res);
$res=MdArea::column("email","username");
dump($res);
3、使用模型添加数据
$res=MdArea::create([
'username'=>'jim',
'password'=>md5('xxxx'),
'email' =>'[email protected]'
],true);
dump($res->id);
dump(res);
$res=MdArea::create([
'username'=>'jim',
'password'=>md5('xxxx'),
'email' =>'[email protected]'
],['username','email']);
dump($res->id);
dump(res);
复杂的形式:
$userModel=new User;
$userModel->username='jim';
$userModel->email='[email protected]';
$userModel->save();
dump($userModel->id);
简单的写法:
$userModel=new User;
$res=$userMode->save([
'username'=>'jim',
'password'=>md5('xxx')
]);
dump($res);
如果字段不存在,也不会报错,使用allowField(true),传递参数true.,如果传递参数是一个数组['username','address'] ,表示只增加数组中的字段内容
$userModel=new User;
$res=$userMode->allowField(true)
->save([
'username'=>'jim',
'password'=>md5('xxx')
]);
dump($res);
多条记录插入
$userModel=new User;
$res=$userMode->saveAll([
'username'=>'jim',
'username'=>'tom'
]);
dump($res);
4、使用模型更新数据
方式一:只有一个参数
$res=User::update([
'id' =>1,
'uername'=>'jim'
]);
dump($res);
方式二: 第二个参数
$res=User::update([
'uername'=>'jim'
],['id'=>2]);
dump($res);
方式三:第二个参数为闭包函数
$res=User::update([
'uername'=>'jim'
],function($query){
$query->where("id","LT",5)
});
dump($res);
$res=User::where("id","<",6)
->update([
'username'=>'jim'
]);
dump($res);
$userModel=User::get(1);
$userModel->username='jim';
$userModel->email='[email protected]';
$res=$userModel->save();
dump($res);