PHP代码篇(三)--常用方法
模块下不间断更新,PHP常用方法,欢迎留言!
/**
* 递归删除指定目录下所有文件及文件夹
* @param unknown $path,删除路径
*/
function deleteFileWay($path)
{
//如果是目录则继续
if(is_dir($path)){
//扫描一个文件夹内的所有文件夹和文件并返回数组
$info = scandir($path);
foreach($info as $k=>$v){
//排除目录中的.和..
if($v != '.' && $v != '..'){
if(is_dir($path.$v)){
//子目录中操作删除文件夹和文件
deleteFileWay($path.$v.'/');
//目录清空后删除空文件夹
@rmdir($path.$v.'/');
}else{
//如果是文件直接删除
@unlink($path.$v);
}
}
}
}
} /**
* [result14 description]
* 查找会员下面所有盟主
* 参数$uid会员id
* 返回
* 'status'=>0,没有下级盟主
* 'status'=>1,'data'=>下级盟主id,数组类型
*/
function result14($uid){
$cancel_user_list=$uid.',';//下级所有盟主列表列表,用于sqlin语句
$crt_level_user=pdo_getall('nets_hjk_members', array('from_uid' => $uid), array('type','memberid','level'));
if (empty($crt_level_user)) {
return array('status'=>0,'hint'=>"没有需要变更的下级1");
}
while (!empty($crt_level_user)) {
//从当前用户中提取memberid,用于下一次取下级用户
$crt_level_user_for_sqlin='';
$crt_level_leader_for_sqlin='';
foreach ($crt_level_user as $value) {
$crt_level_user_for_sqlin .= $value['memberid'].',';
//遍历crt_level_user中所有的行,取出盟主的memberid放在$crt_level_leader_for_sqlin中
if ($value['type'] == 1) {
$crt_level_leader_for_sqlin .= $value['memberid'].',';
}
}
$cancel_user_list .= $crt_level_leader_for_sqlin;
//获取当前层级下级用户
if(!empty($crt_level_user_for_sqlin)){
$crt_level_user_for_sqlin=substr($crt_level_user_for_sqlin,0,strlen($crt_level_user_for_sqlin)-1);
}
$crt_level_user=pdo_fetchall("SELECT ex.memberid,ex.type FROM ".tablename('nets_hjk_members')." AS ex where from_uid in(". $crt_level_user_for_sqlin.") ");
}
$junior_user_list = '';
$cancel_user_list = substr($cancel_user_list,0,strlen($cancel_user_list)-1);
$cancel_user_list_arr = explode(",",$cancel_user_list);
//当下会员下级所有的盟主,数组
$cancel_user_list_arr = array_splice($cancel_user_list_arr,1);
if (empty($cancel_user_list_arr)) {
return array('status'=>0,'hint'=>"没有需要变更的下级2");
}else{
return array('status'=>1,'data'=>$cancel_user_list_arr);
}
}
二、数据库常用操作
//插入一条数据
INSERT INTO ims_stat_rule (rid,hit) VALUES (351,990); //删除一条数据
DELETE FROM ims_nets_hjk_applyfor WHERE member_id = 49483; //修改一条数据
update ims_nets_hjk_members set level = 4 where id = 100248; //查询数据
select * from ims_nets_hjk_members where memberid = 18978; //格式化时间戳
FROM_UNIXTIME(M1.created_at,'%Y-%m-%d %H:%i:%s') AS created_at; //SQL中IF的用法,如果表M1时间戳为0则默认为'/',反之则进行格式化时间戳处理
IF(M1.finish_time = 0,'/',FROM_UNIXTIME(M1.finish_time,'%Y-%m-%d %H:%i:%s')) AS finish_time
三、ThinkPHP5.0常用操作
//查询区间内
$device_string = $db->table('ims_nets_hjk_devices')
->where('device_id',['>=',$k],['<=',$j],'AND')
->where('status',0)
->field('device_id')
->limit(50)
->select(); // 如下为CASE的用法-----------------------------
$level = Db::query("SELECT SUM(1) AS '全部用户',SUM(CASE WHEN type=1 AND level= 0 THEN 1 ELSE 0 END) AS '店主',SUM(CASE WHEN type=1 AND level= 1 THEN 1 ELSE 0 END) AS '高级店主',SUM(CASE WHEN type=1 AND level= 2 THEN 1 ELSE 0 END) AS '特约店主',SUM(CASE WHEN type=0 THEN 1 ELSE 0 END) AS '普通用户',SUM(CASE WHEN is_partner=1 THEN 1 ELSE 0 END) AS '合伙人',SUM(CASE WHEN is_insider=1 THEN 1 ELSE 0 END) AS '内部',SUM(CASE WHEN is_city_agent=1 THEN 1 ELSE 0 END) AS '市级代理' FROM ims_nets_hjk_members");
SELECT SUM(CASE WHEN
pay_status = 1 AND
date_format(from_UNIXTIME(`pay_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d') THEN 1 ELSE 0 END
) AS S1,
SUM(CASE WHEN
pay_status = 1 AND
date_format(from_UNIXTIME(`pay_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d') THEN point ELSE 0 END
) AS S2,
SUM(CASE WHEN
pay_status = 1 AND
order_status = 0 THEN 1 ELSE 0 END
) AS S3
FROM ims_integral_order; // 优化一个四表联查,以会员表作为临时表--------------------------
$list = Db::query("
SELECT
M1s.*, M2.avatar AS avatar_is,
M2.avatar AS avatar_is,M2.nickname AS nickname_is,M2.pid AS pid_is,
M3.integral,M3.asset,M3.wallet,
FROM_UNIXTIME(M4.addTime,'%Y-%m-%d %H:%i:%s') AS addTime
FROM
(
SELECT
memberid,pid,avatar,nickname,FROM_UNIXTIME(created_at,'%Y-%m-%d %H:%i:%s') AS created_at,level,type,is_city_agent,is_partner,is_insider,realname,mobile,from_uid
FROM
ims_nets_hjk_members AS M1
WHERE ".$whes."
ORDER BY
created_at DESC
LIMIT ".(($pindex - 1) * $psize).",". $psize."
) AS M1s
LEFT JOIN ims_nets_hjk_members AS M2 ON M1s.from_uid = M2.memberid
LEFT JOIN ims_mc_members AS M3 ON M1s.memberid = M3.uid
LEFT JOIN t_fans_log AS M4 ON M1s.memberid = M4.fans_memberId
"); //TP自加和自减
$res = $this->where('single','gt',0)
->update([
'red_fee'=>['INC',$fee],//自加
'create_time'=>time(),
'count'=>['DEC',1],//自减
]); //TP大于或者小于
$res = $this->where([
['status','=',1],
['page_id','>',0]
]); //DB操作批量插入
$res = $db->table('ims_nets_hjk_sogo_licence')->insertAll($sogo_licence); //查询指定会员已激活的设备,并且不在ims_nets_hjk_sogo_equipment表里面,EXISTS用法
$list = $db->query("SELECT s_id FROM `ims_nets_hjk_devices`
WHERE active_member_id = ".$uid."
AND `status` = 1
AND NOT EXISTS
(SELECT s_id FROM ims_nets_hjk_sogo_equipment WHERE s_id = ims_nets_hjk_devices.s_id ) //打印SQL语句
->buildSql();
四、ThinkPHP5.0常用操作
//模拟url传递数组
$url = 'http://niushop.jingjinglego.com/index.php?s=/admin/We7Config/addIndexAd&type=2&adList[0][sort]=456&adList[0][img]=upad/test/1e.jpg&adList[0][outerUrl]=www.bai.com&adList[0][source]=1&adList[1][sort]=456&adList[1][img]=upad/test/1e.jpg&adList[1][outerUrl]=www.bai.com&adList[1][source]=1'; //调用请求类request写法,接受数组
$ids = request->post('ids/a'); //获取参数
use think\Request;
$request = Request::instance();
$method = $request->method();//获取上传方式
$request->param();//获取所有参数,最全
$get = $request->get();//获取get上传的内容
$post = $request->post();//获取post上传的内容
$request->file('file')//获取文件 //错误和正确提示及跳转error/success
$this->error("抱歉你不是最帅的人", __URL__ . "/wap/We7Store/storeManagement"); // 锁定跳转,url重定向
$redirect = __URL(__URL__ . "/wap/login/userlock");
$this->redirect($redirect);
四、检查字符串是否是URL
//判断是否是url
function is_url($v){
$pattern="#(http|https)://(.*\.)?.*\..*#i";
if(preg_match($pattern,$v)){
return true;
}else{
return false;
}
}
PHP代码篇(三)--常用方法的更多相关文章
- phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合
建议读者,先阅读官方文档,知晓其支付流程之后再来使用此代码,比方客户须要做什么,服务端须要做什么(非常重要!非常重要! 非常重要!),由于这几个篇幅都是纯代码篇,由于阅读前面的入门篇之后看这些应该毫无 ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法
上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...
- 平衡二叉树,AVL树之代码篇
看完了第一篇博客,相信大家对于平衡二叉树的插入调整以及删除调整已经有了一定的了解,下面,我们开始介绍代码部分. 首先,再次提一下使用的结构定义 typedef char KeyType; //关键字 ...
- TODO:一不顺眼就换字体Go之代码篇
TODO:一不顺眼就换字体Go之代码篇 image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述:新增字体font,进行 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- 【SSRS】入门篇(三) -- 为报表定义数据集
原文:[SSRS]入门篇(三) -- 为报表定义数据集 通过前两篇文件 [SSRS]入门篇(一) -- 创建SSRS项目 和 [SSRS]入门篇(二) -- 建立数据源 后, 我们建立了一个SSRS项 ...
- Netty实现高性能IOT服务器(Groza)之精尽代码篇中
运行环境: JDK 8+ Maven 3.0+ Redis 技术栈: SpringBoot 2.0+ Redis (Lettuce客户端,RedisTemplate模板方法) Netty 4.1+ M ...
- 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)
好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...
- C# webApi上传图片 代码篇
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 代码篇,不多说 如下: using System; using System.Collections.Generic; using System.D ...
随机推荐
- 漏洞扫描与分析-Nessus-8.7.2最新版-安装-部署-使用
漏洞扫描与分析-Nessus 2019/10/10 Chenxin 简介 官网 https://zh-cn.tenable.com/ 产品 https://zh-cn.tenable.com/prod ...
- PHP对URL进行字符串编码
urlencode($url1) urldecode($url) //对URL进行字符串编码和解码 $url1 = 'https://www.baidu.com/uploade/img/123.png ...
- [Linux]线程分离状态的理解
在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached).一个可结合的线程能够被其他线程收回其资源和杀死:在被其他线程回收之前,它的存储器资源(如栈)是不释放的.相反, ...
- 在 VS 中查看所有线程
查看当前所有线程 在程序中打断点,然后启动调试(注意:线程窗口需要启动调试才可以看得到)点击 Debug > Windows > Threads 线程窗口如下:
- day94_11_26爬虫find与findall
一.使用json 正常的,如果需要将response结果序列化,需要将结果json.loads res1=json.loads(response.text) 但是这样会很麻烦,request提供了js ...
- acwing 873. 欧拉函数 模板
地址 https://www.acwing.com/problem/content/875/ 给定n个正整数ai,请你求出每个数的欧拉函数. 欧拉函数的定义 输入格式 第一行包含整数n. 接下来n行, ...
- 06. Go 语言结构体
Go语言结构体(struct) Go 语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. Go 语言中的类 ...
- 创建组件的方法,组件的props属性、state属性的用法和特点,父子组件传值,兄弟组件传值
1.创建组件的方法 函数组件 class组件 1.1 函数组 无状态函数式组件形式上表现为一个只带有一个 `render()` 方法的组件类,通过函数形式或者 `ES6` 箭头 `functi ...
- ELK 安装
ELK 是 Elasticesarch Logstash kibana 三个开源软件 Elasticsearch是个开源分布式搜索引擎,提供搜集.分析.存储数据三大功能.它的特点有:分布式,零配置, ...
- ASP.NET Core 中使用负载均衡时获取客户端 IP
在使用负载均衡的情况下,通过 context.Connection.RemoteIpAddress 获取到的是负载均衡的 IP 地址,需要通过 X-Forwarded-For 请求头才能获取到客户端的 ...