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 ...
随机推荐
- JS中的slice()和splice()的区别以及记忆方式
总结 splice()会改变原来的数组,返回的是被改变的内容,比如说通过splice删掉了某一项,那么返回的是删掉的这一项,当然还是会以数组的形式返回. slice不会对原数组进行改变,会返回一个新的 ...
- ios中仿蚂蚁森林动画效果
参考链接:https://www.jianshu.com/p/0ba9d80f8e77 demo下载链接:https://gitee.com/ovix/TreeWithRandomFruitBtn
- Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法
Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...
- 【Https异常】This request has been blocked; the content must be served over HTTPS
一.问题出现场景 项目从http升级到https后,jsp页面存在发送http请求的情况下就会出现该异常.因为HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 ...
- JAVA笔试题(全解)
目录 一. Java基础部分................................................................. 9 1.一个".java& ...
- Redis安装和基本操作
Redis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 是属于非关系型数据库1.数据比模型较简单2.需要灵活性更强的IT系统3.对数据库性能 ...
- day_93_11_25爬虫一requests,项目框架
总结 nginx反向代理与正向代理. 正向带里就是,客户端通过中转服务器,访问其它他服务器的数据. 反向代理就是用户访问中转服务器,看起来就像和这台服务器交互一样. nginx动静分离. 当客户端访问 ...
- LG2145 「JSOI2007」祖码 区间DP
问题描述 LG2145 题解 把颜色相同的一段看做一个点. 然后类似于合唱队区间DP即可. 但是这题好像出过一些情况,导致我包括题解区所有人需要特判最后一个点. \(\mathrm{Code}\) # ...
- git pull出错:cannot pull into a repository with state: merging_resolved"
git pull 出错解放办法:1.尝试先提交现有代码到本地,再更新2.git reset —hard
- rsync的简介及使用
1.rsync的基础概述 1.什么是备份 相当于给源文件增加一个副本,但是备份只会备份当前状态的数据,当你在写数据是,不会备份新写入的数据,除非自己手动在备份一次. 2.为什么要做备份 1.需要备份一 ...