<?php
namespace app\controller;
use app\BaseController;
//! 2、引入Db门面类
use think\facade\Db;
//! 15、引入Request门面类
use think\facade\Request;
use app\model\OykUser;
use app\model\User;
public function two(){
Db::table('oyk_user')->select();
//! 1、where条件
在第二个参数添加符号,如果是等号,可以省略
// = 、<>(不等于) 、> 、< 、>= 、<=
$ret = Db::table('oyk_user')->where('uid',2)->select();
print_r($ret);
//! 1.2、模糊查询:LIKE它不是=号,直接写的值,必须处理
// 如果没有处理,相当于等号
// %符号,匹配任意的文本,任意的长度
// 如果你要查询的文本,你不知道在字段中的位置,你需要在两边都增加%
$ret = Db::table('oyk_user')->where('nickname','like','%小编%')->select();
print_r($ret);
//! 1.3、NOTLIKE 模糊查询 取反
$ret = Db::table('oyk_user')->where('nickname','notlike','%小编%')->select();
print_r($ret);
//! 1.4、BETWEEN 查询区间 NOTBETWEEN区间取反
$ret = Db::table('oyk_user')->where('uid','between','5,10')->select();
print_r($ret);
//! 1.5、IN NOTIN
$ret = Db::table('oyk_user')->where('uid','in','9,12,15')->select();
print_r($ret);
//! 1.6、<>不等于
$ret = Db::table('oyk_user')->where('uid','<>','3')->select();
print_r($ret);
//! 2、field返回值,使用数组的形式
$ret = Db::table('oyk_user')->field([
'uid',
'nickname'
])->select();
// 或者
$arr = [
'uid'=>'id',
'nickname'=>'name'
];
$ret = Db::table('oyk_user')->field($arr)->select();
print_r($ret);
//! 2.1、如果字段比较多,其中几个不要,可以用更方便的方法,WithoutField
$arr = [
'add_time',
'password',
'add_ip',
'last_time',
'last_ip'
];
$ret = Db::table('oyk_user')->WithoutField($arr)->select();
print_r($ret);
//! 3、order 排序 原生:order by
// 参数1:字段名,参数2:排序类型->desc(倒序)asc(正序)
$ret = Db::table('oyk_user')->order('uid','DESC')->select();
// 如果不写的话,默认uid为第一排序,也可以手动写第一排序和第二排序
$ret = Db::table('oyk_user')->order('last_time','DESC')->order('uid','DESC')->select();
print_r($ret);
//! 4、以上学习的Db方法,可以一起使用链式操作
$ret = Db::table('oyk_user')->field('uid','nickname')->where('uid','>=','10')->order('last_time','DESC')->order('uid','DESC')->select();
print_r($ret);
//! 5、可以返回最后执行的mysql原生语句 getLastSql()
Db::table('oyk_user')->field('uid','nickname')->where('uid','>=','10')->order('last_time','DESC')->order('uid','DESC')->select();
echo Db::getLastSql();
print_r($ret);
//! 6、在链式操作时使用fetchSql(),Db语句不执行,仅返回所表示的mysql原生语句
// 比如添加、修改,对数据库进行修改的语句,可以先看下语句
$ret = Db::table('oyk_user')->field('uid','nickname')->where('uid','>=','10')->order('last_time','DESC')->order('uid','DESC')->fetchSQl()->select();
print_r($ret);
//! 7、分页 limit
// 第一个参数: 从第多少条取(不包括当前)
// 第二个参数: 取出多少条
// 如果只有一个参数,就是从第一条开始,取多少条
$ret = Db::table('oyk_user')->limit(5,3)->select();
print_r($ret);
// $p = 0 第一页
// $p = $p + 5 第二页
// $p = $p + 5 第三页
// $p = $_GET['p']; //0 5 10
// $p = $_GET['p']; //1 2 3 4
// 如果用limit,我们比page多一步操作,就是计算当前条数
// $p = $p * 5;
$ret = Db::table('oyk_user')->limit($p,5)->select();
// 取出多少条
$ret = Db::table('oyk_user')->limit(5)->select();
//! 8、分页 page(thinkphp自带方法)
// 第一参数 是(自定义的)第几页
// 第二参数 取出多少条
// 1 5 uid 1 - 5
// 2 5 uid 6 - 10
// 如果做翻页,使用page更方便一些
$p = $_GET['p'];
$ret = Db::table('oyk_user')->page($p,5)->select();
print_r($ret);
// $p++;
//! 9、聚合查询
// oyk_user 要知道这个表里有多少条数据
// 9.1、count
$ret = Db::table('oyk_user')->count();
print_r($ret);
// 或者
$ret = Db::table('oyk_user')->select()->toArray();
echo count($ret);
// 9.2、max最大值
// 9.3、min最小值
// 排行榜,就可以用这个来完成,和count搭配
$ret = Db::table('oyk_user')->max('uid');
$ret = Db::table('oyk_user')->min('uid');
print_r($ret);
//! 10、多条 where 其SQL原生语句是AND
$ret = Db::table('oyk_user')->where('last_time','>',1660896721)->where('last_time','>',1661521699)->select();
$ret = Db::table('oyk_user')
->where([
['last_time','>',1660896721],
['last_time','<',1661521699],
])
->select();
// 也可以使用二维数组传值where条件
// print_r($ret);
//! 11、or 提供了whereOr方法
// 这里可以有多个条件,写成数组 或者 多个whereOr
$ret = Db::table('oyk_user')->where('uid','=',6)->whereOr('uid','=',10)->select();
print_r($ret);
//! 12、访问其它数据库中的表,多数据库操作 connect 改变数据库,切换数据库
$ret = Db::connect('dsp')->table('oyk_user')->select();
print_r($ret);
//! 13、数据处理
//! 13.1、toArray把返回的数据,类型为对象转换为数组
$ret = Db::table('oyk_user')->select()->toArray();
print_r($ret);
//! 13.2、isEmpty 判断数据是否为空
$ret = Db::table('oyk_user')->where('uid',999)->select()->toArray();
if(empty($ret)){
echo '结果为空';
}
print_r($ret);
// 如果使用isEmpty()就不需要加toArray()了
$ret = Db::table('oyk_user')->where('uid',999)->select();
if($ret->isEmpty()){
echo '结果为空';
}
// merge 合并其它数据
$ret1 = Db::table('oyk_user')->where('uid',999)->select();
$ret2 = Db::table('oyk_user')->where('uid',999)->select();
$ret = $ret1->merge($ret2);
print_r($ret);
// pop 删除最后一个元素
// shift 删除第一个元素
// unshift 在开头插入一个元素
// 也可以查询完了再筛选
$ret = Db::table('oyk_user')->select();
print_r($ret->where('uid',9));
// 查询出来的数字想怎么操作都行,与数据库里面的信息无关了
//! 14、name的参数就是表名,为什么要有table和name呢
// name可以去掉表前缀,但是表前缀要再config里的database.php文件中配置
// table是不能使用表前缀的
$ret = Db::name('oyk_user')->select();
print_r($ret);
// 30分钟之前的时间戳
$time = time() -30 * 60 ;
$delete = Db::table('oyk_user')->where('last_time','<',$time)->delete();
// 15、请求
print_r($_GET);
// ThinkPHP把请求做了一个类, Request
// 使用时,要先引用
print_r(Request::get());
think\Request 普通类
think\facade\Request 门面类、静态的
print_r(Request::param());
// 如果有两个参数,想直接获取其中一个,直接传值即可
$name = Request::get('name');
// http://www.ou.com/index.php/index/two 就可以看成一个普通的接口
// 我们要把php写成接口,然后给前端使用
// 我们需要自己剔除非法数据
// 使用修饰符,让id只认数字
// d 把接收的数据转为整形
// s 把接收的数据转为字符串
// b 把接收的数据转为布尔值
// a 把接收的数据转为数组
// f 把接收的数据转为浮点型
$post = Request::post('id/d');
print_r($post);
}
02-ThinkPHP数据库操作
最新推荐文章于 2024-07-10 22:41:59 发布