首页 网络编程 前端制作 数据库 CMS教程 脚本编程 微信开发 小程序开发 服务器

php实例

热门: ASP.NET PHP编程 ASP编程 JSP编程

ThinkPHP5-数据库基本操作

来源:未知 发布时间:2019-03-28

一、数据库配置 
1、在应用目录或者模块目录下面的database.php中添加下面的配置参数:

return [
    // 数据库类型
    'type'        => 'mysql',
    // 数据库连接DSN配置
    'dsn'         => '',
    // 服务器地址
    'hostname'    => '127.0.0.1',
    // 数据库名
    'database'    => 'thinkphp',
    // 数据库用户名
    'username'    => 'root',
    // 数据库密码
    'password'    => '',
    // 数据库连接端口
    'hostport'    => '',
    // 数据库连接参数
    'params'      => [],
    // 数据库编码默认采用utf8
    'charset'     => 'utf8',
    // 数据库表前缀
    'prefix'      => 'think_',
    // 数据库调试模式
    'debug'       => false,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'deploy'      => 0,
    // 数据库读写是否分离 主从式有效
    'rw_separate' => false,
    // 读写分离后 主服务器数量
    'master_num'  => 1,
    // 指定从服务器序号
    'slave_no'    => '',
    // 是否严格检查字段是否存在
    'fields_strict'  => true,    
];

2、方法中配置(字符串配置、数组配置):

2.1 字符串配置
    Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');
    数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集
2.2  数组配置
   Db::connect([
     //数据库类型
     'type'  => 'mysql',
    //服务器地址
     'hostname'  => '127.0.0.1',
    //数据库名
     'database'  => 'thinkphp',
    //数据库名  
     'username'  => 'root',
    //数据库密码  
     'password'  => 'root',
    //数据库表前缀
     'prefix'   => 'think_',
   ]);

二、基本查询

1、query(查询操作)execute(写入操作) 原生态SQL语句 增删改查

Db::execute("insert into t_test(username,password) values('小明','111111')");  
Db::execute("update t_test set username ='55' where id = '10'");
Db::query('select * from t_test where id = 5');
Db::execute('delete from t_test where id = 6');

2、 参数绑定 命名占位符绑定

支持参数绑定:
Db::query('select * from think_user where id=?',[8]);
Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);

支持占位符绑定:
Db::query('select * from think_user where id=:id',['id'=>8]);
Db::execute('insert into think_user (id, name) values (:id, :name)',['id'=>8,'name'=>'thinkphp']);

三、查询构造器 

【在thinkPHP5.0.9之后,db('表名') 助手函数默认不再强制重新连接,这样大大的缩减了每次使用时重连数据库的操作时间,更加方便】

【在数据库配置中配置了表前缀的情况下(假定表前缀是think_ ,表名为think_user),Db::table('think_user') 、Db::name('user') 跟 db('user')是一样的】

【在数据库配置中没有配置表前缀的情况下(假定表名为think_user),Db::table('think_user')、Db::name('think_user') 跟 db('user') 是一样的】

1、查询数据: 
(1)查询一个数据使用:

// table方法必须指定完整的数据表名
Db::table('think_user')->where('id',1)->find();
//find 方法查询结果不存在,返回 null,存在则返回一条一维数组

(2)查询数据集

Db::table('think_user')->where('status',1)->select();
select 方法查询结果不存在,返回空数组,存在则返回二维数组集合

如果设置了数据表前缀参数的话,可以使用

Db::name('user')->where('id',1)->find();
Db::name('user')->where('status',1)->select();

如果你的数据表没有使用表前缀功能,那么name和table方法的一样的效果。 
(3)助手函数 
系统提供了一个db助手函数,可以更方便的查询:

db('user')->where('id',1)->find();
db('user')->where('status',1)->select();

2、添加数据: 
(1)添加一条数据

$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::table('think_user')->insert($data);
//insert 方法添加成功,返回值是影响记录的行数
Db::table('think_user')->insertGetId($data);
//insertGetId 方法添加成功,返回插入数据的自增id值

(2)添加多条数据

$data = [
    ['foo' => 'bar', 'bar' => 'foo'],
    ['foo' => 'bar1', 'bar' => 'foo1'],
    ['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data);
//insertAll 方法添加数据成功,返回影响记录的行数

(3)助手函数

// 添加单条数据
db('user')->insert($data);
// 添加多条数据
db('user')->insertAll($list);

3、更新数据: 

【更新时必须带有条件,否则会报错,如果想全部更新,则可以在where条件中写上恒等式“1=1”】

【更新方法的返回值,都是影响记录的行数,如果更新前后保持不变,则返回0,更新失败返回的则是false】
(1)更新数据表中的数据

Db::table('think_user')
    ->where('id', 1)
    ->update(['name' => 'thinkphp']);

(2)助手函数

// 更新数据表中的数据
db('user')->where('id',1)->update(['name' => 'thinkphp']);
// 更新某个字段的值
db('user')->where('id',1)->setField('name','thinkphp');
//setField 方法,仅用于更新某一个字段
// 自增 score 字段
db('user')->where('id', 1)->setInc('score');
//setInc 方法,参数1:是要自增的字段名,参数2[可省略],默认为1,是每次自增的数目,特别书用于网站点击量啥的
// 自减 score 字段
db('user')->where('id', 1)->setDec('score');
//setDec 方法,参数1:是要自减的字段名,参数2[可省略],默认为1,是每次自减的数目,特别适用于商品库存啥的

4、删除数据 
(1)删除数据表中

【删除时必须带有条件,否则会报错,如果想全部更新,则可以在where条件中写上恒等式“1=1”】

【返回值为影响的行数】

  // 根据主键删除 
 Db::table(‘think_user’)->delete(1); 
 Db::table(‘think_user’)->delete([1,2,3]);

 // 条件删除 
 Db::table(‘think_user’)->where(‘id’,1)->delete(); 
 Db::table(‘think_user’)->where(‘id’,’<’,10)->delete();

(2)助手函数

//根据主键删除
db('user')->delete(1);
//条件删除    
db('user')->where('id',1)->delete();

五、查询方法
1、条件查询方法

(1)where 方法

  // 可以使用where方法进行and条件查询

Db::table('think_user')
    ->where('name','like','%thinkphp')
    ->where('status',1)
    ->find();

//多个字段相同条件的and查询优化,用'&'符号链接多个字段
Db::table('think_user')
    ->where('name&title','like','%thinkphp')
    ->find();
//多个字段相同条件的or查询优化,用'|'符号链接多个字段
Db::table('think_user')
    ->where('name|title','like','%thinkphp')
    ->find();

(2)whereOr 方法
// 使用whereOr 方法进行OR关系查询,一般whereOr 方法根where 方法在一起使用
Db::table('think_user')
    ->where('id','>','10')
    ->whereOr('title','like','%thinkphp')
    ->find();

2、条件查询方法
//where方法和whereOr方法在复杂的查询条件中经常需要配合一起混合使用,下面举个例子:
$result = Db::table('think_user')->where(function ($query) {
    $query->where('id', 1)->whereor('id', 2);
})->whereOr(function ($query) {
    $query->where('name', 'like', 'think')->whereOr('name', 'like', 'thinkphp');
})->select();

3、getTableInfo 方法
//使用getTableInfo可以获取表信息,信息类型 包括 fields,type,bind,pk,以数组的形式展示,可以指定某个信息进行获取
  // 获取`think_user`表所有信息
  Db::getTableInfo('think_user');
  // 获取`think_user`表所有字段
  Db::getTableInfo('think_user', 'fields');
  // 获取`think_user`表所有字段的类型
  Db::getTableInfo('think_user', 'type');
  // 获取`think_user`表的主键
  Db::getTableInfo('think_user', 'pk');

上一篇:ThinkPHP3.2框架自定义配置和加载用法示例

下一篇:没有了

网络编程 | 前端制作 | 数据库 | CMS教程 | 脚本编程 | 微信开发 | 小程序开发 | 服务器 |

程序员学习网,提供最新的微信开发教程,小程序开发教程,网络编程、php教程、asp.net教程、微信公众平台二次开发教程、脚本编程、网页制作、网页设计、网页特效,为站长与网络编程从业者提供学习资料,凡本网站转载的文章、图片等资料的版权归版权所有人所有,因无法和版权所有者一一联系,如果本网站选取的文/图威胁到您的权益,请您及时和本网站联系。 我们会在第一时间内采取措施,避免给双方造 成不必要的损失。
© 2015-2018 程序员学习网 版权所有,并保留所有权利。

电脑版 | 移动版