tp数据库操作

1、常见的数据库操作
//插入记录
// $insert=Db::execute("insert into tp_user (username,password) values ('dome','pass2')");
////用?号代表参数占位符 []里的就是参数
// $insert=Db::execute("insert into tp_user (username,password) values (?,?)",['domeUser','domepass']);
//:username,:password占位符,后面[]号内的表是参数key、val和数据库字段一一对应
//$insert=Db::execute("insert into tp_user (username,password) values (:username,:password)",['username'=>'admin','password'=>'sjdn2345']);
 //插入构造器
// $insert =Db::table('tp_user')->insert(['username'=>'admin3','password'=>'pass3']);
 ////插入构造器,此方法不用加前缀tp_
// $insert =Db::name('user')->insert(['username'=>'admin4','password'=>'pass4']);
---------
//更新记录
//$updata=Db::execute("update tp_user set username='admin2' where id=1");
 //更新构造器
// $updata=Db::table('tp_user')->where('id',2)->update(['username'=>'222','password'=>'333']);
---------

//查询记录
//$select=Db::query("select * from tp_user order by id desc limit 10");
// $select=Db::query("select * from tp_user where id=?",[1]);
//查询构造器
//$select=Db::table('tp_user')->where('id',2)->select();
//$data=Db::name('user')->field('username,password')->where('id',1)->order('id','desc')->limit(10)->select();
//查询单条记录
// $select=Db::name('user')->where("id",3)->find();
//查询条件查询 可以用 '>= ',4 '<= ',4 '<>',4 'in',[4,5,6,7] 'between',[5,10] 'not in',[1,5,8] 'exp'," in(1,2,3,4)" 'exp'," like '%1%'" 'exp',"=3"
//$select=Db::name('user')->where("id",'in',[3,4,5])->select();
//查询满足条件id=3 and username like '%admin3%'
//$select=Db::name('user')->where("id",'exp'," like '%3%' or username='admin4'" )->select();
//查询满足条件id=4 and username like '%admin4%'
//$select=Db::name('user')->where(['id'=>['=',4],'username'=>['like','%admin4%'],])->select();
//快捷查询id>0 or username>0
//$select=Db::name('user')->where('id|username','>',0)->select();
//视图的创建方法
//create view user as select a.name,a.age,b.sex from usera as a, userb as b where a.name=b.name;
//另一种query对象查询方法
/*
$query=new hinkdbQuery;
$query->name('user')->where('id',3);
$result=Db::select($query);
*/
 //查询单条语句的某个值
//$name=Db::name('user')->where('id',3)->value('username');
//查询某列字段返回是数组,的username为value值 id为下标key
//$name=Db::name('user')->where('status',1)->column('username','id');
//查询数据集,ID为字段对应的所有数据集
// $name=Db::name('user')->where('status',1)->column('*','id');
//聚合查询 count() max('id') min('id') avg() sum()
//$count=Db::name('user')->where("status",1)->count();
//简单查询
// $select=Db::name('user')->where("id > 3 and id<5")->select();
//简单查询用占位符防止注入 建议这么写法
// $select=Db::name('user')->where("id > :id and username like :username",['id'=>3,'username'=>'dome'])->select();
//查询时间2016-01-01自动转换成时间戳
// $result=Db::name('user')->whereTime('addTime','>','2016-01-01')->select();
// $result=Db::name('user')->whereTime('addTime','between',['2016-01-01','2017-01-01'])->select();
//查询今天数据 今天today 昨天yesterday 本周week 上周last week
// $result=Db::name('user')->whereTime('addTime','today')->select();
//分块查询
/*
Db::name('user')->where('id>0')->chunk(2,function($list){
foreach ($list as $data)
{
print_r($data);
}
});
*/

-----------
//清空表数据
//$clear= Db::execute("TRUNCATE table tp_user");

//删除构造器
//$delete=Db::table('tp_user')->where('id',2)->delete();
----------
//自动事务处理
/*
Db::transaction(function(){
Db::name('user')->where("id",1)->delete();//删除
Db::name('user_group')->insert(['uid'=>121,'groupName'=>'删除']);//插入
});
*/
//手动事务处理
/*
Db::startTrans();
try{
Db::name('user')->where("id",1)->delete();//删除
Db::name('user_group')->insert(['uid'=>131,'groupName'=>'删除']);//插入
Db::commit();
}catch (Exception $e){
Db::rollback();
}
*/

----------


//跨数据库查询 tp2是第二个数据库 注意此方法需要在Config.php配置数据库连接参数与database.php一样
// $db2=Db::connect('tp2')->query("insert into tp_bank (uid,bankName,number) values (3,'dome','pass2')");
//$db2=Db::connect('tp2')->query("select * from tp_bank ");
config.php配置内容如下:
//连接数据库
'tp2'=>[
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'tp2',
// 用户名
'username' => 'root',
// 密码
'password' => 'root',
// 端口
'hostport' => '',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'tp_',
// 数据库调试模式
'debug' => true,
// 数据库部署方式: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,
]

2、
原文地址:https://www.cnblogs.com/bk7788/p/7251497.html