zoukankan      html  css  js  c++  java
  • ThinkPHP5.0数据库基本操作

    一、查询数据操作如下:

    db('user')->where('id',1)->find();//查询一条数据
    db('user')->where('status',1)->select();//查询多条数据

    二、添加数据操作如下:

    // 添加单条数据
    $data = ['foo' => 'bar', 'bar' => 'foo'];
    db('user')->insert($data);
    
    // 添加多条数据
    $list = [
        ['foo' => 'bar', 'bar' => 'foo'],
        ['foo' => 'bar1', 'bar' => 'foo1'],
        ['foo' => 'bar2', 'bar' => 'foo2']
    ];
    db('user')->insertAll($list);

    三、修改数据操作如下:

    // 更新数据表中的数据
    db('user')->where('id',1)->update(['name' => 'thinkphp']);
    // 更新某个字段的值
    db('user')->where('id',1)->setField('name','thinkphp');
    // 自增 score 字段
    db('user')->where('id', 1)->setInc('score');
    // 自减 score 字段
    db('user')->where('id', 1)->setDec('score');

    四、删除数据操作如下:

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

    五、查询条件方法:

    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();
    whereOr方法
    使用whereOr方法进行OR查询:
    Db::table('think_user')
        ->where('name','like','%thinkphp')
        ->whereOr('title','like','%thinkphp')
        ->find();
    多字段相同条件的OR查询可以简化为如下方式:
    Db::table('think_user')
        ->where('name|title','like','%thinkphp')
        ->find();
    混合查询
    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();
    生成的sql语句类似于下面:
    
    SELECT * FROM `think_user` WHERE  (  `id` = 1 OR `id` = 2 ) OR (  `name` LIKE 'think' OR `name` LIKE 'thinkphp' )
    注意闭包查询里面的顺序,而且第一个查询方法用where或者whereOr是没有区别的。
    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');

    七、查询表达示如下:

    where('字段名','表达式','查询条件');
    whereOr('字段名','表达式','查询条件');
    表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:

    例子:

    where('id','eq',100);
    where('id','=',100);

    七、数组查询操作如下:

    $map['name'] = 'thinkphp';
    $map['status'] = 1;
    // 把查询条件传入查询方法
    Db::table('think_user')->where($map)->select(); 
    
    // 助手函数
    db('user')->where($map)->select();

    使用字符串条件直接查询和操作,例如:

    Db::table('think_user')->where('type=1 AND status=1')->select(); 

    使用字符串条件的时候,建议配合预处理机制,确保更加安全,例如:

    Db::table('think_user')->where("id=:id and username=:name")->bind(['id'=>[1,PDO::PARAM_INT],'name'=>'thinkphp'])->select();
  • 相关阅读:
    Javascript创建对象的几种方式【转】
    log4net轻松使用日期作为动态文件名【转】
    使用jquery的lazy loader插件实现图片的延迟加载
    Oracle通用分页存储过程的创建与使用
    Oracle 11g R2的卸载与重装
    Oracle的rownum的原理和使用【转】
    Remoting客户端和服务端两种方式的调用总结
    动态执行SQL语句
    Trie模板
    Dijkstrapriority_queue
  • 原文地址:https://www.cnblogs.com/520fyl/p/7122393.html
Copyright © 2011-2022 走看看