模块下不间断更新,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代码篇(三)--常用方法的更多相关文章

  1. phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合

    建议读者,先阅读官方文档,知晓其支付流程之后再来使用此代码,比方客户须要做什么,服务端须要做什么(非常重要!非常重要! 非常重要!),由于这几个篇幅都是纯代码篇,由于阅读前面的入门篇之后看这些应该毫无 ...

  2. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  3. YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法

    上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...

  4. 平衡二叉树,AVL树之代码篇

    看完了第一篇博客,相信大家对于平衡二叉树的插入调整以及删除调整已经有了一定的了解,下面,我们开始介绍代码部分. 首先,再次提一下使用的结构定义 typedef char KeyType; //关键字 ...

  5. TODO:一不顺眼就换字体Go之代码篇

    TODO:一不顺眼就换字体Go之代码篇 image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述:新增字体font,进行 ...

  6. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  7. 【SSRS】入门篇(三) -- 为报表定义数据集

    原文:[SSRS]入门篇(三) -- 为报表定义数据集 通过前两篇文件 [SSRS]入门篇(一) -- 创建SSRS项目 和 [SSRS]入门篇(二) -- 建立数据源 后, 我们建立了一个SSRS项 ...

  8. Netty实现高性能IOT服务器(Groza)之精尽代码篇中

    运行环境: JDK 8+ Maven 3.0+ Redis 技术栈: SpringBoot 2.0+ Redis (Lettuce客户端,RedisTemplate模板方法) Netty 4.1+ M ...

  9. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

    好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...

  10. C# webApi上传图片 代码篇

    十年河东,十年河西,莫欺少年穷 学无止境,精益求精 代码篇,不多说 如下: using System; using System.Collections.Generic; using System.D ...

随机推荐

  1. 关于mybtis 使用过程中发生There is no getter for property named 'id' in class 'java.lang.String' 错误

    今天在修改一个关于mybtis语句时,偶然发现的一个错误  There is no getter for property named 'id' in class 'java.lang.String' ...

  2. [browser location和history] 简单实现了个路由[转载]

    今天看了1下前面写的,好像缺乏交流性,周末再来弄吧 -0- 今天看了browser 的 location 和 history location属性 // //location.hash 性是一个可读可 ...

  3. 使用npm link 加速调试

    我们在把包发布到npm上时,如果需要对本地的包进行修改,我们需要改变一个版本,重新发布.然后测试时需要更新这个包进行测试.这样的话,每一次的调试都特别麻烦.我们可以使用npm link来加速这个调试过 ...

  4. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之四:组织单位服务安装账号设置

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  5. AudioRecord 录制播放PCM音频

    AudioRecord 与 MediaRecorder 区别 AudioRecord 基于字节流录制,输出的是pcm数据,未进行压缩,直接保存的pcm文件不能被播放器识别播放. 可以对音频文件进行实时 ...

  6. 配置环境变量后不生效,显示缓存的旧jdk版本,解决方案

    本人一直用jdk1.8版本; 今天安装了jdk11版本, 并配置好了jdk11的环境变量JAVA_HOME    :   jdk安装路径bin目录的上级目录PATH    :  %JAVA_HOME% ...

  7. lambda的一個小用法

    lambda主要是對流的掌握,當然可以連著寫很多,但是不太容易閲讀 public static void main(String[] args) throws IOException { Path d ...

  8. Django 缓存 cache基本使用

    1.设置setting REDIS_HOST = '10.133.3.26' REDIS_POST = 6379 REDIS_DATABASE = 3 REDIS_PASSWORD = '' CACH ...

  9. 剑指Offer-31.整数中1出现的次数(从1到n整数中1出现的次数)(C++/Java)

    题目: 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.A ...

  10. 移动端px自动转化为rem

    注:不转换的px用大写PX代替 lib-flexible 作用:让网页根据设备dpr和宽度,利用viewport和html根元素的font-size配合rem来适配不同尺寸的移动端设备 安装:cnpm ...