本文实例讲述了Thinkphp5.0框架的Db操作。分享给大家供大家参考,具体如下:
连接操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
class Index extends Controller
{
public function study_db(){
//方式一:默认读取配置文件的配置
$res = Db::connect();
//方式二:手动配置,使用一个数组
$res = Db::connect([
'type' => 'mysql' ,
'hostname' => '127.0.0.1' ,
'database' => 'bodywork3' ,
'username' => 'root' ,
'password' => '666' ,
'hostport' => '3306' ,
'charset' => 'utf8'
]);
//方式三:手动配置,使用一个字符串
$res = Db::connect( "mysql://root:password@127.0.0.1:3306/database_name#utf8" );
//方式四:手动配置,使用一个字符串
//这种方式,需要在config配置文件中有tp_db_config数组配置
$res = Db::connect( "tp_db_config" );
}
}
|
查询sql:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$data = Db::query( "select * from user" );
dump( $data );
$data = Db::table( 'user' )->select();
$data = Db::table( 'user' )->find();
//获取一条记录的某个字段值
$name = Db::table( 'user' )->where([ 'id' ]=>5)->value( 'name' );
//获取一列值
$all_name = Db::table( 'user' )->column( 'name' );
//获取一列值,第二个参数作为索引
$all_name = Db::table( 'user' )->column( 'name' , 'id' );
//注意:
//select和column获取不到数据时返回空数组。
//find和value获取不到数据时返回null。
$data = db( 'user' )->select(); //每次会实例化类
$data = db( 'user' ,[],false)->select(); //每次不会实例化类
|
1
2
3
4
5
6
|
//表名字,使用table
$data = Db::table( 'prefix_user' )->select();
//表名字,使用name
$data = Db::name( 'user' )->select();
//使用table()时需要带上表前缀,
//使用name()时不需要表前缀,
|
添加sql:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
//执行sql语句添加数据
Db::execute( "insert into user values (1,'name',10)" );
//,返回影响的行数
$res = Db::name( 'user' )->insert([
'name' => 'hello' ,
'age' => 10
]);
//insertGetId()方法可以在添加数据后返回数据的id
$id = Db::name( 'user' )->insertGetId([
'name' => 'hello' ,
'age' => 10
]);
//添加多个数据,返回影响的行数
$res = Db::name( 'user' )->insertAll([
[ 'name' => 'hello' , 'age' => 10],
[ 'name' => 'world' , 'age' => 12],
]);
|
更新sql:
1
2
3
4
5
6
7
8
9
10
11
|
//更新多个字段
$res = Db::name( 'user' )-where([ 'id' =>1])->update([
'username' => 'zhang san' ,
'age' => '6'
]);
//更新一个字段
$res = Db::name( 'user' )-where([ 'id' =>1])->setField( 'username' , 'zhang san' );
//自增、自减
$res = Db::name( 'user' )-where([ 'id' =>1])->setInc( 'score' );
$res = Db::name( 'user' )-where([ 'id' =>1])->setDec( 'score' );
$res = Db::name( 'user' )-where([ 'id' =>1])->setInc( 'score' ,2);
|
删除sql:
1
2
3
4
|
//删除一条记录
$res = Db::name( 'user' )->where([ 'id' =>1])-> delete ();
//如果where条件是主键,可以这样写
$res = Db::name( 'user' )-> delete (1);
|
查询构造器:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//打印sql,where值为数组
$sql = Db::name( 'user' )->where([ 'id' =>1])->buildSql();
dump( $sql );
//结果:SELECT * FROM `user` WHERE `id` = 1
//打印sql,where值为两个参数
$sql2 = Db::name( 'user' )->where( 'id' ,1)->buildSql();
dump( $sql2 );
//结果:SELECT * FROM `user` WHERE `id` = 1
//打印sql,where值为三个参数
$sql3 = Db::name( 'user' )->where( 'id' , '=' ,1)->buildSql();
dump( $sql3 );
//结果:SELECT * FROM `user` WHERE `id` = 1
//打印sql,where多条件
$sql4 = Db::name( 'user' )->where([
'id' => [ 'in' ,[1,2,3,4,5]],
'age' => [ 'gt' ,10]
])->buildSql();
dump( $sql4 );
//结果:SELECT * FROM `user` WHERE `id` IN (1,2,3,4,5) AND `age` > 10
//使用EXP表达式
$sql5 = Db::name( 'user' )->where( 'id' , 'EXP' , 'not in (2,5)' )->buildSql();
dump( $sql5 );
//结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) )
//可以使用连续的where条件
$sql6 = Db::name( 'user' )
->where( 'id' , 'EXP' , 'not in (2,5)' )
->where( 'age' , '>' ,10)
->buildSql();
dump( $sql6 );
//结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) AND `age` > 10
//如果多个where条件是or关系,使用whereOr
$sql7 = Db::name( 'user' )
->where( 'id' , 'EXP' , 'not in (2,5)' )
->whereOr( 'age' , '>' ,10)
->buildSql();
dump( $sql7 );
//结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) OR `age` > 10
|
链式操作:
1
2
3
4
5
6
7
8
9
10
|
//链式操作,常用方法
$data = Db::name( 'user' )
->where([ 'id' , '>' ,10])
->field( 'id,name,age' )
->order( 'addtime desc' )
->limit( '10,5' )
// ->page('3,5') //limit((page-1)*5,5)
// ->group('course')
->select();
dump( $data );
|
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/gyfluck/p/9415018.html