thinkphp mysql inc_关于thinkphp5.0数据库操作的案例

一、支持数据库的类型

Mysql,SqlServer,pgSQL,Sqlite等数据库的支持

二、如何连接数据库

1.配置文件定义

a.配置文件目录

项目\application\database.php

b.如何配置return [ // 数据库类型

'type' => 'mysql', // 服务器地址

'hostname' => '127.0.0.1', // 数据库名

'database' => '', // 用户名

'username' => 'root', // 密码

'password' => '', // 端口

'hostport' => '3306',

];

c.如何使用// 实例化系统数据库类$DB=new Db;// 查询数据$data=$DB::table("user")->select();//使用sql语句$data=$DB::query("select * from user");

2.方法配置

1.使用数组//Db类中的connect方法:数据库初始化 并取得数据库类实例 $DB=Db::connect([ // 数据库类型

'type' => 'mysql', // 服务器地址

'hostname' => '127.0.0.1', // 数据库名

'database' => 'edu', // 用户名

'username' => 'root', // 密码

'password' => '', // 端口

'hostport' => '3306',

]);

2.使用字符串//Db类中的connect方法:数据库初始化 并取得数据库类实例$DB=Db::connect("mysql://root:@127.0.0.1:3306/edu#utf8");

3.如何使用$data=$DB->table('user')->select();

3.模型类定义

1.创建数据模型a.命令行创建

b.手动创建

1.打开数据模型目录(项目\application\index\model)

2.在目录文件下新建文件User.php

3.在文件中书写代码<?php

// 声明命名空间(位置)

namespace app\index\model; // 声明控制器

use think\Model; class User extends Model

{

}?>

2.如何设置<?php

// 声明命名空间(位置)

namespace app\index\model; // 声明控制器

use think\Model; class User extends Model

{

// 使用数组连接数据库

protected $connection=[ // 数据库类型

'type' => 'mysql', // 服务器地址

'hostname' => '127.0.0.1', // 数据库名

'database' => 'edu', // 用户名

'username' => 'root', // 密码

'password' => '', // 端口

'hostport' => '3306',

]; //使用字符串

protected $connection="mysql://root:@127.0.0.1:3306/edu#utf8";

}?>

3.如何控制器中使用// 使用模型定义连接public function data2(){

echo "使用模型连接数据库"; $user=new \app\index\model\User();

dump($user::all());

}

三、查询数据

1.tp方法// 实例化系统数据库类$DB=new Db;// 查询数据$data=$DB::table("user")->select();

2.使用sql语句//使用sql语句$data=$DB::query("select * from user");

四、数据库的基本使用

支持query(查询操作)和execute(写入操作)

0.获取指定sql语句// 获取执行的sql语句echo Db::getLastSql();

1.查询$data=Db::query("select * from user");

$data=Db::query("select * from user where id >=? and id<=?",[5,8]);

2.增加$data=Db::execute("insert into user value(null,'user1','123','18')");

$data=Db::execute("insert into user value(null,?,?,?)",['user2','123','20']");

$data=Db::execute("insert into user value(null,:name,:pass,:age)",['name'=>'user3','pass'=>'123','age'=>'20']);

3.删除$data=Db::execute("delete from user where id=10");

$data=Db::execute("delete from user where id>?",[15]);

$data=Db::execute("delete from user where id>:id",['id'=>10]);

4.修改$data=Db::execute("update user set age='20' where id=?",[15]);

五、TP数据处理

1.查询操作1.table方法查询数据

// 查询所有数据

$data=Db::table("user")->select();

// 查询一条数据

$data=Db::table("user")->find();

2.name方法查询数据

//name方法会自动添加上配置文件中的表前缀,与配置文件有关

$data=Db::name("user")->select();

$data=Db::name("user")->find();

3.助手函数

$data=db("user")->select();

$data=db("user")->find();

4.where条件匹配

$data=Db::table("user")->where("id",">",5)->select();

$data=Db::table("user")->where("id","where("id",">",8)->select();

$data=Db::table("user")->where("name","like","%tian%")->select();

$data=Db::table("user")->where("name","wanlisha")->where("pass","wanlisha")->select();

5.whereor条件查询

$data=Db::table("user")->where("id","<=",'21')->whereOr("id","<=",5)->select();

$data=Db::table("user")->where("name",'like',"%tian%")->whereOr("name",'like','%wanli%')->select();

$data=Db::table("user")->where("name|pass",'like',"%tian%")->select();//

6.limit截取数据

$data=Db::table("user")->limit(2)->select();

$data=Db::table("user")->limit(0,2)->select();

7.order实现排序

$data=Db::table("user")->order('id')->select();

$data=Db::table("user")->order("id","desc")->select();

8.field 设置查询字段

//设置查询字段

$data=Db::table("user")->field('name,pass')->select();

$data=Db::table("user")->field(['name','pass'])->select();

// 给name起别名

$data=Db::table("user")->field('name uname,pass')->select();

$data=Db::table("user")->field(['name'=> 'uname','pass'])->select();

// sql的系统函数

$data=Db::table("user")->field("count(*) as tot")->select();

$data=Db::table("user")->field(["count(*)"=>"tot"])->select();

//排除字段

$data=Db::table("user")->field("name,pass",true)->select();

$data=Db::table("user")->field(["name","pass"],true)->select();

9.Page实现分页效果

$data=Db::table("user")->page(3,5)->select();

$data=Db::table("user")->page("3,5")->select();

10.分组聚合

$data=Db::table("user")->field("pass,count(*) tot")->group("pass")->select();

11.having过滤

// 只能结合分组使用

$data=Db::table("user")->field("pass,count(*) tot")->having("tot >=4")->group("pass")->select();

12.多表查询

// 内敛实现数据库连接

$data=Db::query("select product.*,fenlei.name tname from fenlei,product where product.cid=fenlei.id");

$data=Db::table("product")->field("product.*,fenlei.name tname")->join("fenlei","product.cid=fenlei.id")->select();

// 右链接

$data=Db::table("product")->field("product.*,fenlei.name tname")->join("fenlei","product.cid=fenlei.id",'right')->select();

// 左链接

$data=Db::table("product")->field("product.*,fenlei.name tname")->join("fenlei","product.cid=fenlei.id",'left')->select();

13.别名使用-给表起别名

$data=Db::table("product")->alias('p')->field("p.*,f.name fname")->join("fenlei f","p.cid=f.id",'left')->select();

14.union集合

$data=Db::field("name")->table("user")->union("select name from product")->select();

15.参数绑定bind为了防止sql注入

//自动轻微防止sql注入

$data=Db::table("user")->where("id",$id)->delete();

//不防注入 建议不要使用原生的sql语句

$data=Db::execute("delete from user where id=$id");

//防注入

$data=Db::table("user")->where("id",":id")->bind(['id'=>[$id,\PDO::PARAM_INT]])->delete();

16.统计数据

$data=Db::table("user")->max("age");

$data=Db::table("user")->min("age");

$data=Db::table("user")->avg("age");

$data=Db::table("user")->sum("age");

$data=Db::table("user")->count();

17.视图查询(多表查询)

$data=Db::view("goods","id,name,price")->view("type","name","type.id=goods.cid")->select();

// 左连接

$data=Db::view("goods","id,name,price")->view("type","name","type.id=goods.cid","right")->select();

// 右连接

$data=Db::view("goods","id,name,price")->view("type","name","type.id=goods.cid","left")->select();

2.插入操作1.插入单条数据

// 数组中的字段名必须和数据库中字段名一致

$data=[

'name'=>'张三',

'pass'=>'123',

'age'=>18

];

// 返回值:影响行数

$code=Db::table("user")->insert($data);

$code=db("user")->insert($data);

2.插入多条数据

$data=[

[

'name'=>'张三1',

'pass'=>'123',

'age'=>18

],

[

'name'=>'张三2',

'pass'=>'123',

'age'=>18

]

];

//返回值:影响行数

$code=Db::table("user")->insertAll($data);

$code=db("user")->insertAll($data);

3.获取最后一次插入的id

$data=[

'name'=>'张三1',

'pass'=>'123',

'age'=>18

];

$code=Db::table("user")->insertGetId($data);

$code=db("user")->insertGetId($data);

3.更新数据1.修改数据

$code=Db::table("user")->where("id",">",5)->update(["age"=>111,"pass"=>'111']);

$code=Db::table("user")->update(["id"=>5,"age"=>60]);

code=Db::table("user")->where("id",5)->setField("age",111);

2.设置自增

$code=Db::table("user")->where("id",6)->setInc("age");

3.设置自减

$code=Db::table("user")->where("id",7)->setDec("age");

$code=Db::table("user")->where("id",5)->setDec("age",3);

4.删除数据1.删除一条数据

$code=Db::table("user")->where("id",6)->delete();

$code=Db::table("user")->delete(7);

2.删除多条数据

$code=Db::table("user")->where("id in(1,2)")->delete();

$code=Db::table("user")->delete([2,3]);

3.删除区间数据

$code=Db::table("user")->where("id>0 and id<5")->delete();

六、事务机制

1.mysql事务

要求数据的引擎必须是InnoDB

重点:对要操作的数据表执行语句:ALTER TABLE user ENGINE=INNODB;

2.使用

1. 自动控制事务Db::transaction(function(){ // 删除一条数据 Db::table("user")->delete(11); Db::table("user")->deletes(40);});

2. 手动控制事务// 手动控制事务

// 开启事务

Db::startTrans(); try{ // 删除数据

$a=Db::table("user")->delete(11); // 判断是否删除成功

if(!$a){ throw new \Exception("删除11没有成功");

} // 删除不存在的数据

$b=Db::table("user")->delete(12); if(!$b){ throw new \Exception("删除12没有成功");

} // 执行提交操作

Db::commit();`这里写代码片` echo "成功";

}catch(\Exception $e){ // 回滚事务

echo "失败";

Db::rollback();

dump($e->getmessage());

}// 开启事务

Db::startTrans(); // 删除数据

$a=Db::table("user")->delete(1); $b=Db::table("user")->delete(2); // 判断条件

if($a && $b){ // 提交事务

Db::commit();

}else{

Db::rollback();

}

一、支持数据库的类型

Mysql,SqlServer,pgSQL,Sqlite等数据库的支持

二、如何连接数据库

1.配置文件定义

a.配置文件目录

项目\application\database.php

b.如何配置return [ // 数据库类型

'type' => 'mysql', // 服务器地址

'hostname' => '127.0.0.1', // 数据库名

'database' => '', // 用户名

'username' => 'root', // 密码

'password' => '', // 端口

'hostport' => '3306',

];

c.如何使用// 实例化系统数据库类$DB=new Db;// 查询数据$data=$DB::table("user")->select();//使用sql语句$data=$DB::query("select * from user");

2.方法配置

1.使用数组//Db类中的connect方法:数据库初始化 并取得数据库类实例 $DB=Db::connect([ // 数据库类型

'type' => 'mysql', // 服务器地址

'hostname' => '127.0.0.1', // 数据库名

'database' => 'edu', // 用户名

'username' => 'root', // 密码

'password' => '', // 端口

'hostport' => '3306',

]);

2.使用字符串//Db类中的connect方法:数据库初始化 并取得数据库类实例$DB=Db::connect("mysql://root:@127.0.0.1:3306/edu#utf8");

3.如何使用$data=$DB->table('user')->select();

3.模型类定义

1.创建数据模型a.命令行创建

b.手动创建

1.打开数据模型目录(项目\application\index\model)

2.在目录文件下新建文件User.php

3.在文件中书写代码<?php

// 声明命名空间(位置)

namespace app\index\model; // 声明控制器

use think\Model; class User extends Model

{

}?>

2.如何设置<?php

// 声明命名空间(位置)

namespace app\index\model; // 声明控制器

use think\Model; class User extends Model

{

// 使用数组连接数据库

protected $connection=[ // 数据库类型

'type' => 'mysql', // 服务器地址

'hostname' => '127.0.0.1', // 数据库名

'database' => 'edu', // 用户名

'username' => 'root', // 密码

'password' => '', // 端口

'hostport' => '3306',

]; //使用字符串

protected $connection="mysql://root:@127.0.0.1:3306/edu#utf8";

}?>

3.如何控制器中使用// 使用模型定义连接public function data2(){

echo "使用模型连接数据库"; $user=new \app\index\model\User();

dump($user::all());

}

三、查询数据

1.tp方法// 实例化系统数据库类$DB=new Db;// 查询数据$data=$DB::table("user")->select();

2.使用sql语句//使用sql语句$data=$DB::query("select * from user");

四、数据库的基本使用

支持query(查询操作)和execute(写入操作)

0.获取指定sql语句// 获取执行的sql语句echo Db::getLastSql();

1.查询$data=Db::query("select * from user");

$data=Db::query("select * from user where id >=? and id<=?",[5,8]);

2.增加$data=Db::execute("insert into user value(null,'user1','123','18')");

$data=Db::execute("insert into user value(null,?,?,?)",['user2','123','20']");

$data=Db::execute("insert into user value(null,:name,:pass,:age)",['name'=>'user3','pass'=>'123','age'=>'20']);

3.删除$data=Db::execute("delete from user where id=10");

$data=Db::execute("delete from user where id>?",[15]);

$data=Db::execute("delete from user where id>:id",['id'=>10]);

4.修改$data=Db::execute("update user set age='20' where id=?",[15]);

五、TP数据处理

1.查询操作1.table方法查询数据

// 查询所有数据

$data=Db::table("user")->select();

// 查询一条数据

$data=Db::table("user")->find();

2.name方法查询数据

//name方法会自动添加上配置文件中的表前缀,与配置文件有关

$data=Db::name("user")->select();

$data=Db::name("user")->find();

3.助手函数

$data=db("user")->select();

$data=db("user")->find();

4.where条件匹配

$data=Db::table("user")->where("id",">",5)->select();

$data=Db::table("user")->where("id","where("id",">",8)->select();

$data=Db::table("user")->where("name","like","%tian%")->select();

$data=Db::table("user")->where("name","wanlisha")->where("pass","wanlisha")->select();

5.whereor条件查询

$data=Db::table("user")->where("id","<=",'21')->whereOr("id","<=",5)->select();

$data=Db::table("user")->where("name",'like',"%tian%")->whereOr("name",'like','%wanli%')->select();

$data=Db::table("user")->where("name|pass",'like',"%tian%")->select();//

6.limit截取数据

$data=Db::table("user")->limit(2)->select();

$data=Db::table("user")->limit(0,2)->select();

7.order实现排序

$data=Db::table("user")->order('id')->select();

$data=Db::table("user")->order("id","desc")->select();

8.field 设置查询字段

//设置查询字段

$data=Db::table("user")->field('name,pass')->select();

$data=Db::table("user")->field(['name','pass'])->select();

// 给name起别名

$data=Db::table("user")->field('name uname,pass')->select();

$data=Db::table("user")->field(['name'=> 'uname','pass'])->select();

// sql的系统函数

$data=Db::table("user")->field("count(*) as tot")->select();

$data=Db::table("user")->field(["count(*)"=>"tot"])->select();

//排除字段

$data=Db::table("user")->field("name,pass",true)->select();

$data=Db::table("user")->field(["name","pass"],true)->select();

9.Page实现分页效果

$data=Db::table("user")->page(3,5)->select();

$data=Db::table("user")->page("3,5")->select();

10.分组聚合

$data=Db::table("user")->field("pass,count(*) tot")->group("pass")->select();

11.having过滤

// 只能结合分组使用

$data=Db::table("user")->field("pass,count(*) tot")->having("tot >=4")->group("pass")->select();

12.多表查询

// 内敛实现数据库连接

$data=Db::query("select product.*,fenlei.name tname from fenlei,product where product.cid=fenlei.id");

$data=Db::table("product")->field("product.*,fenlei.name tname")->join("fenlei","product.cid=fenlei.id")->select();

// 右链接

$data=Db::table("product")->field("product.*,fenlei.name tname")->join("fenlei","product.cid=fenlei.id",'right')->select();

// 左链接

$data=Db::table("product")->field("product.*,fenlei.name tname")->join("fenlei","product.cid=fenlei.id",'left')->select();

13.别名使用-给表起别名

$data=Db::table("product")->alias('p')->field("p.*,f.name fname")->join("fenlei f","p.cid=f.id",'left')->select();

14.union集合

$data=Db::field("name")->table("user")->union("select name from product")->select();

15.参数绑定bind为了防止sql注入

//自动轻微防止sql注入

$data=Db::table("user")->where("id",$id)->delete();

//不防注入 建议不要使用原生的sql语句

$data=Db::execute("delete from user where id=$id");

//防注入

$data=Db::table("user")->where("id",":id")->bind(['id'=>[$id,\PDO::PARAM_INT]])->delete();

16.统计数据

$data=Db::table("user")->max("age");

$data=Db::table("user")->min("age");

$data=Db::table("user")->avg("age");

$data=Db::table("user")->sum("age");

$data=Db::table("user")->count();

17.视图查询(多表查询)

$data=Db::view("goods","id,name,price")->view("type","name","type.id=goods.cid")->select();

// 左连接

$data=Db::view("goods","id,name,price")->view("type","name","type.id=goods.cid","right")->select();

// 右连接

$data=Db::view("goods","id,name,price")->view("type","name","type.id=goods.cid","left")->select();

2.插入操作1.插入单条数据

// 数组中的字段名必须和数据库中字段名一致

$data=[

'name'=>'张三',

'pass'=>'123',

'age'=>18

];

// 返回值:影响行数

$code=Db::table("user")->insert($data);

$code=db("user")->insert($data);

2.插入多条数据

$data=[

[

'name'=>'张三1',

'pass'=>'123',

'age'=>18

],

[

'name'=>'张三2',

'pass'=>'123',

'age'=>18

]

];

//返回值:影响行数

$code=Db::table("user")->insertAll($data);

$code=db("user")->insertAll($data);

3.获取最后一次插入的id

$data=[

'name'=>'张三1',

'pass'=>'123',

'age'=>18

];

$code=Db::table("user")->insertGetId($data);

$code=db("user")->insertGetId($data);

3.更新数据1.修改数据

$code=Db::table("user")->where("id",">",5)->update(["age"=>111,"pass"=>'111']);

$code=Db::table("user")->update(["id"=>5,"age"=>60]);

code=Db::table("user")->where("id",5)->setField("age",111);

2.设置自增

$code=Db::table("user")->where("id",6)->setInc("age");

3.设置自减

$code=Db::table("user")->where("id",7)->setDec("age");

$code=Db::table("user")->where("id",5)->setDec("age",3);

4.删除数据1.删除一条数据

$code=Db::table("user")->where("id",6)->delete();

$code=Db::table("user")->delete(7);

2.删除多条数据

$code=Db::table("user")->where("id in(1,2)")->delete();

$code=Db::table("user")->delete([2,3]);

3.删除区间数据

$code=Db::table("user")->where("id>0 and id<5")->delete();

六、事务机制

1.mysql事务

要求数据的引擎必须是InnoDB

重点:对要操作的数据表执行语句:ALTER TABLE user ENGINE=INNODB;

2.使用

1. 自动控制事务Db::transaction(function(){ // 删除一条数据 Db::table("user")->delete(11); Db::table("user")->deletes(40);});

2. 手动控制事务// 手动控制事务

// 开启事务

Db::startTrans(); try{ // 删除数据

$a=Db::table("user")->delete(11); // 判断是否删除成功

if(!$a){ throw new \Exception("删除11没有成功");

} // 删除不存在的数据

$b=Db::table("user")->delete(12); if(!$b){ throw new \Exception("删除12没有成功");

} // 执行提交操作

Db::commit();`这里写代码片` echo "成功";

}catch(\Exception $e){ // 回滚事务

echo "失败";

Db::rollback();

dump($e->getmessage());

} // 开启事务

Db::startTrans(); // 删除数据

$a=Db::table("user")->delete(1); $b=Db::table("user")->delete(2); // 判断条件

if($a && $b){ // 提交事务

Db::commit();

}else{

Db::rollback();

}

本文讲解了关于thinkphp5.0数据库操作的案例,更多相关内容请关注php中文网。

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值