首页
统计
壁纸
追番记录
优秀博主
关于
推荐
导航
工具
音乐解锁
Search
1
NAS的简单介绍
707 阅读
2
网站环境一键部署工具推荐
504 阅读
3
tp5-模型数据处理
393 阅读
4
第20200225期-电脑壁纸-P10
350 阅读
5
PHP常用系统函数速查表
340 阅读
PHP
闲谈杂料
硬件系统
美图
ThinkPHP
笔记
数据库
Lua
登录
Search
标签搜索
ThinkPHP
MySQL
Laravel
PHP
API
GIT
Windows10
markdown
Web
跨域
ajax
小程序
壁纸
Linux
jsonp
try
异常
Dcat
UEFI
win10
phpfunny
累计撰写
104
篇文章
累计收到
24
条评论
首页
栏目
PHP
闲谈杂料
硬件系统
美图
ThinkPHP
笔记
数据库
Lua
页面
统计
壁纸
追番记录
优秀博主
关于
推荐
导航
工具
音乐解锁
搜索到
22
篇与
的结果
2019-11-04
tp5-数据库介绍1
什么是端口?所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。常用的端口有哪些?HTTP:80(www服务)DHCP:服务器端口67,客户机端口68POP3:25SMTP:23FTP:20(数据传输),23(控制信令的传输、控制信息和数据能够同时传输)|FTP采用的是TCP连接DNS:53mysql:3306Apache:2268QQ:8000(服务端)和4000端口(客户端)远程桌面:3389查看端口号的两种方式:1任务管理器2.cmd>netstat -ano数据库操作一.查询的类1. DB类-数据库基本的类|特殊方法:query,execute(执行原生的查询方法) <br> 2. 模型类 <br>二.查询构造器 1. 链式操作-解决SQL语句如何拼接的问题 <br> 2. 查询语音-解决where条件怎么写的问题 <br>三.CURL方法 1. C-数据创建|create <br> 2. U-数据更新|update <br> 3. R-读取|find,select <br> 4. D-删除|delete <br> 基础的sql语句public function db(){ //基本的sql语句 $sql = "select * from 表名"; $result = \think\Db::query($sql); }配置了数据库链接信息后可以直接使用数据运行原生SQL操作,支持 query (查询操作) 和 execute (写入操作)支持参数绑定参数绑定Db::query('select * from think_user where id=?',[8]); Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);命名占位符绑定Db::query('select * from think_user where id=:id',['id'=>8]); Db::execute('insert into think_user (id, name) values (:id, :name)',['id'=>8,'name'=>'thinkphp']);多个数据库连接Db::connect($config)->query('select * from think_user where id=:id',['id'=>8]);查询构造器链式操作作用是生成标准的严谨sql语句所有的连贯操作都返回当前的模型实例对象(this)其中带*标识的表示支持多次调用 $result =Db::table('ecm_user') ->field('id') ->field('uname') ->field('upwd') ->where('id','=',18) ->order('id,desc') ->select();【链式操作1】table,指定查询的表,直接写完整的表明:如果需要别名一般陪着alias来使用或者直接空格+别名。$result=Db::table('ecm_users')->select(); $result=Db::table('ecm_users a')->select();//起别名 $result=Db::table('ecm_users')->alias('a')->select(); $result=Db::table('__USERS__')->select();//表前缀与系统默认的相同时:去掉表前缀,所有字母都大写。【链式操作2】field*,可以重复使用,指定要查询的字段逗号分隔的字符串:'字段名1,字段名2,字段名3,...'字段名的索引数组:['字段名1','字段名2','字段名3'...]可以对字段夹别名:逗号分隔的字符串'uname as 别名'|'uname 别名'|['uname'=>'别名']多次field方法查询多个字段field(true),显示查询全部字段,默认查询全部字段的内容,默认把全部字段都列出来 隐式查询可以不写field,直接为星号,这种方式查询在高仿问量的系统中效率极低, 一般我们要进行显示查询,指定相关字段查询,这样效率高,即使查询全部字段这种方式也高排除默认写占用资源高的字段或者根据要求显示一部分字段但不显示的占少数,可以考虑使用field('排除的字段',true) 7.字段上可以使用SQL函数$result=Db::table('ecm_users')->field('id,uname,email')->select(); $result=Db::table('ecm_users')->field('id','uname','tel')->select(); $result=Db::table('ecm_users')->field(true)->select(); $result=Db::table('ecm_goods') ->field('goods_id,left(goods_name,3) as goods_info') ->field('FROM_UNIXTIME(add_time, \'%Y-%m-%d %H:%i:%s') as add_times') ->field('if(if_show,"上架","下架") as if_shows') ->select();SQL中时间戳和本地时间互相转换select from_unixtime(1234567890,'%Y-%m-%d %H:%i:%s');select unix_Timestamp('2019-11-04 12:23:00');sql中的if判断if(exp1,exp2,exp3)//exp1是判断条件,exp2是条件true执行,exp3是条件false执行实例化详情小豆丁博客介绍什么是实例化实例化本身public static function instance($options = []) { if(is_null(self::$instance)){ self::$instance = new static($options); } return self::$instance; }static方法实例化本身实例化对象M()和D()的区别参考ThinkPHP中实例化对象M()和D()的区别
2019年11月04日
163 阅读
0 评论
0 点赞
2019-11-01
tp5-请求接参
接收请求参数静态调用》$request = Request::instance(); //use think\Request;助手函数》$request=request();Request::instance();//单例的设计模式,始终保证内存中只有一个类的实例化对象;获取请求参数//变量类型方法([变量名],[/变量修饰符],['‘默认值'],[过滤方法])参数1:变量类型方法,根据请求的类型来使用相应的方法param(parameter,核心目标获取的是pathinfo的参数)、get、post;参数2:变量名,可选,如果写,可以直接接到对应参数的值,不写为获取全部参数的数组,相当于$_GET $_POST;$param=$request->param('');<br> $get=$request->get();<br> //指定参数接值或者不指定参数接值<br>参数3:变量修饰符,对接收的变量进行强制的类型转换,复选框命名要加[]并且接收参需要加/a进行强制类型转换修饰符作用/s强制转换为字符串类型/d强制转换为整型类型/b强制转换为布尔类型/a强制转换为数组类型/f强制转换为浮点类型参数4:默认值。当接收的参数数没有设置的接参变量的时候(没给传递的时候),会将默认值赋给接收的变量注意:pathinfo方式传参时参数名存在,参数值不存在,那么认为该参数没有传,默认值就起效果了get和post方式如果参数名存在,那么就认为参数存在,认为是默认赋值了空字符串的值,request接参时默认值 是没有效果的数组特殊-例如复选框一个不选,走默认值。参数5:过滤方法,执行的顺序是从左向右;其实就是一个参数的函数;只是执行了一个函数而已,函数可以不是过滤的效果,如:md5;常用的过滤函数有trim(去除两端空格),htmlspecialchars(特殊字符转义)strip_tags(滤掉NUL,HTML和PHP的标签)<!--参考代码--><br> $param = $request->param();<br> $get = $request->get();<br> $post = $request->post();<br> $id = $request->param('id/d','1');//参数是否传值<br> $ids = $request->get('ids',2);//参数是否存在<br> $vip = $request->post('vip/a',[22]);//复选框特殊<br> $username = $request-post('username','default','trim,htmlspecialchars,strip_tags');//参数是否存在<br> $usernamee = $request->post('username','default','md5');//参数是否存在<br> // 赋值到模版<br> $this->assign('name','zhuoxiang');使用PHP函数对变量进行比较sql注释 在索引栏中输入一下代码:select * from user where username='admin' or 1=1;--' and upwd='123456';//--注释后面的代码将屏蔽掉不在执行。select * from user where username='admin' or 1=1;drop 表名//删除表
2019年11月01日
154 阅读
0 评论
0 点赞
2019-10-31
tp5-模板
普通标签{$name}普通标签的定界符被修改成<{}>,输出要<{$name}>才生效变量输出$view=new View();$view->name='thinkphp';return $view->fetch();模板使用:hello,{$name}!$data['name']='Thinkphp'$data['email']='thinkphp@qq.com'$view->assign('data',$data);模板使用:Name:{$data.name} 或者 Email:{$data['email']}如果data变量是一个对象:{$data:name}或者{$data->email}系统变量通常以 {$Think打头{$Think.server.script_name} // 输出$_SERVER['SCRIPT_NAME']变量{$Think.session.user_id} // 输出$_SESSION['user_id']变量{$Think.get.pageNumber} // 输出$_GET['pageNumber']变量{$Think.cookie.name} // 输出$_COOKIE['name']变量支持输出 $_SERVER 、 $_ENV 、 $_POST 、 $_GET 、 $_REQUEST 、 $_SESSION 和$_COOKIE 变量。常量输出{$Think.APP_PATH}配置输出{$Think.config.default_module}{$Think.config.default_controller}请求参数代补使用函数模板输出变量使用函数{$data.name|md5}编译后的结果:<?php echo (md5($data['name'])); ?>函数有多个参数需要调用{$create_time|date="y-m-d",###}编译后的结果:<?php echo (date("y-m-d",$create_time)); ?>果前面输出的变量在后面定义的函数的第一个参数{$data.name|substr=0,3} 或者 {$data.name|substr=###,0,3} 编译后的结果:<?php echo (substr($data['name'],0,3)); ?>以支持多个函数过滤,多个函数之间用“|”分割{$name|md5|strtoupper|substr=0,3}编译后的结果:<?php echo (substr(strtoupper(md5($name)),0,3)); ?>函数会按照从左到右的顺序依次调用可以使用冒号{:substr(strtoupper(md5($name)),0,3)}默认值defaultThinkPHP-4内容运算符{$a+$b}<!--在使用运算符的时候,不再支持常规函数用法,例如:{$user.score+10} //正确的{$user['score']+10} //正确的{$user['score']*$user['level']} //正确的{$user['score']|myFun*10} //错误的{$user['score']+myFun($user['level'])} //正确的-->三元运算ThinkPHP-4内容原样输出literalThinkPHP-4内容模板注释ThinkPHP-4内容
2019年10月31日
146 阅读
0 评论
0 点赞
2019-10-31
tp5-视图层2
使用默认值给变量提供默认值,例如:{$name|default="xxxx"}默认值和函数可以同时使用,例如:{$Think.get.name|getName|default="xxxx"}三元运算符{$name? "yes":"no"}在什么情况下执行三种false: 未定义 , 定义了没赋值 , 空`三种写法{$status? '正常':'错误'}{$info['status']? $info['msg']:$info['error']}{$info.status?$info.msg:$info.error}5.0还支持{$name.aa ?? 'xxxx'}第一种情况: ?:<{$status? '正常';'错误'}> echo !empty($sataus)?''正常;'错误'简写:标准的三目判断 如果问号前面不写参数为输出判断的参数{$status?:'xxxx'}相当于{$status? $status:'xxxx'}第二种情况: ??{vaername.aa ?? 'xxxx'} 原生》echo isset($static) ?$status:'错误';第三种情况 : ?= (只能输出判断表达式为真的情况)<{$status?='xxx'}> 原生》if(!empty($status)) echo 'xxxx';第四种情况: 条件表达式 ==,>=,<=<{$a==$b ? 'yes':'no'}> 原生》 echo $a==$b?'yes':'no';tp的注释-literalhtml中的不适用tp,因为文档加载时优先加载tp代码。{literal} tp代码 {/literal} tp的内置标签,输出不用尖角号<{}>直接{}即可<!---多行注释 {/ /}只能用于一个定界符内<{/xxxxxxxx/}>模板单行注释<{//$sataus}>-->模板注释1.只能注释同一个标签内2.结束标记跟定界符之前可以有空格,但起始标记不能与定界符有任何空格3.模板注释后在临时文件中是不显示的包含文件-include(内置标签){include file='模板文件1,模板文件2,.........' /}参数1:模板表达式【模快@】【控制器/】【操作】参数2:使用模板相对地址模板包含:1.模板表达式中对应的控制器,方法未必一定存在2.如果模板文件中含有对应控制器赋值的变量,那么该变量需要在当前控制器中再次赋值;3.包含文件中可以在使用include标签包含别的文件,但注意不要形成A包含A,或者A包含B而B又包含A这样的死循环。三种接值方法1.post接值$post=$request->post(); $arr=$request->post('id/a');//接数组2.get接值$get=$request->get();3.pathinfo接值$id=$request->param('id/d');//接单值pathinfo不能接数组窝窝头。嘿嘿qwq
2019年10月31日
167 阅读
0 评论
0 点赞
2019-10-30
tp5-视图层1
渲染模板输出return $this->fetch('str',['name'=>'thinkphp']);助手函数渲染模板输出的话,可以使用系统提供的助手函数view,完成相同的功能:return view('hello',['name'=>'thinkphp']);【渲染模板】模板文件的存在不需要对应的控制器和方法存在参数1:模板文件①不写;默认的规则,渲染当前模块下的当前控制器的当前方法对应的模板; > return $this->fetch(); ②模板表达式或者模板渲染方式:[模块@][控制器/][操作],可以从左向右省略,控制器和方法名次采用小写+下划线的方法. > return $this->fetch('admin@goods/index') ③相对路径:相对于入口文件为起始的相对路径 > return('..\\application\\index\\view\\index\\index.html');参数2:模板变量(数组),第一维一定是关联数组,相当于批量赋值的写法fetch('[模板文件]'[,'模板变量(数组)']) // 第二个数值可以不写,逗号占位 > return $this->fetch('','people'->'PRC'); 视图代码:<{$people}>参数3:模板输出替换(数组) ['__IMG__'=>'/static/img']return $this->fetch('',[参数2],['__IMG__'=>'/static/img']);查看Think的版本视图代码: <{$Think.Version}>URL生成在控制器或者php代码种尽量使用类的静态调用方式(速度快)参数①:地址表达式,[模块/][控制器/][操作],作用是为了生成URL地址而存在,控制器和方法名遵循控制器和方法的起名原则(驼峰法) > use think\Url; //导入url > echo \think\Url::build('admin/Goods/showMsg'); //可以简写不用引用 > echo url(); 参数②:参数,URL链接上的参数,采用关联数组方法定义 参数③:伪静态后缀,默认值(true)是输出html,如果不想要后缀可以使用false或者‘’; > echo \think\Url::build('admin/Goods/showMsg',['id'=>11,'name'=>'zhuoxiang'],'true'); //最后的参数是后缀名,可以填jsp,true,false,''; 参数④:是否显示域名,默认为false不显示域名,显示当前域名可以写true,或者直接写域名 > echo Url::build('admin/Goods/showMsg',['id'=11,'name'=>'zhuoxiang'],true,'www.baidu.com'); //最后参数是自定指定的链接使用管道符①使用管道符|来表示函数,模板变量|函数名=参数。 函数只有一个参数或者单多个参数在第一位时,可以不写这个参数或者用###占位 函数支持嵌套执行,从左向右顺序执行 * <{$name|md5|strtoupper|substr=###,1,10}> * <?php echo substr(strtoupper(md5($name)),1,10);?> ②使用冒号:形式输出函数(跟原生的PHP使用函数方式一致,只是在前面加了一个冒号),:函数名(参数...)视图代码控制代码网页显示end
2019年10月30日
146 阅读
0 评论
0 点赞
2019-10-29
tp5-控制器和视图
第二天、控制器和视图第一部分:常识什么是面向对象例如,计算过程不算只要结果1.1 什么面向对象过程例如,封装函数就是面向对象的过程MVC的各层功能Model是应用程序中处理应用程序数据逻辑的部分 View 是应用程序中处理数据显示的部分 controller是应用程序中处理用户交互的部分MVC的优缺点优点: 代码更加清晰,适合于二次开发或者持续的迭代开发 适合与多人开发 用这种结构开发项目的底层和代码更加安全 缺点: 代码结构更加复杂,执行效率偏低》解决办法:增加缓存 大型项目比较适合使用,而小项目降低了效率》解决办法:小项目不使用MVC结构查看PHP版本的四种方式①命令行查询:php -v(version) ②使用预定义常量PHP_VERSION查询:<?php echo PHP_VERION;?> ③使用phpversion()函数查询: <?php echo phpversion();?> ④使用phpinfo()函数查询:<?php echo phpinfo();?>什么命名规范请查看《ThinkPHP介绍》这篇介绍八种类型中简单类型叫什么?八种数据类型其中简单类型4种叫做标量,判断是否为标量is_scalar();五种赋值方式赋值字符串到模板、 赋值一维数组到模板(索引和关联)、 批量赋值(最好使用一维关联数组,一般常用与修改时在模板显示原数据)、 赋值二维数组调用到模板、 赋值对象到模板tp中<{foreach}>各种参数叫什么name是数据源,item表示循环变量,默认key是键 数据源:将赋值过来的变量去掉$就是数据源怎么修改赋值到模板的定界符号config.php文件'模板设置'中tpl_begin\tpl_end修改定界符PHP内置空对象?怎么实例化空对象stdClass() new \stdClass(); //斜杆的意思是前面没有任何别名11.控制器的职责第二部分:代码1. 第七题:五种赋值方法控制器视图控制鸡偶行数0.0 变色网页浏览控制器视图继承和渲染
2019年10月29日
139 阅读
0 评论
0 点赞
2019-10-28
tp5-安装和部署
第一天,安装和部署什么是ThinkPHP?ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架```1.1 查看php版本的多种方法①命令行查询:php -v(version) ②使用预定义常量PHP_VERSION查询:<?php echo PHP_VERION;?> ③使用phpversion()函数查询: <?php echo phpversion();?> ④使用phpinfo()函数查询:<?php echo phpinfo();?>ThinkPHP的组织方式?thinkphp应用基于MVC的方式来组织什么是MVC?MVC是一个设计模式,由三个核心组成Model-模型,View-视图,controller-控制器3.1 MVC的各层功能Model 是应用程序中处理应用程序数据逻辑的部分 View 是应用程序中处理数据显示的部分 Controller 是应用程序中处理用户交互的部分3.2 MVC的优缺点优点: 代码更加清晰,适合于二次开发或者持续的迭代开发 适合与多人开发 用这种结构开发项目的底层和代码更加安全 缺点: 代码结构更加复杂,执行效率偏低》解决办法:增加缓存 大型项目比较适合使用,而小项目降低了效率》解决办法:小项目不使用MVC结构什么是框架?本身不一定完整但可以结局特定问题、可以扩展什么是二层框架?例如smarty,将逻辑代码与内容分离什么是三层框架?例如MVC,分为模型模块-视图模块-控制模块三种结构入口文件的访问方式?单一入口,无论完成什么功能都要通过入口文件访问,统一但不唯一访问模式pathinfo的访问模式,http://项目地址/入口文件/模块名/控制器名/参数名/参数/参数2/参数2...静态后缀模块化设计思想?让代码更清晰、更容易重用。默认划分为前台模块和后台模块什么是命名空间?起个别名,作用是在项目空间中避免重名命名空间的创立?namespace app\文件名\controller;控制器的定义采用大驼峰法(首字母大写),遇到下一个单词首字母继续大学,其他小写 相同一类的业务都放在一个控制器中 根据业务逻辑起别名 类名与控制器名一致 控制器的类文件名与类名一致命名空间的要求tp人为要求命名空间的起名规则与路径相同application下控制器下的Index为什么要大写?遵循开发规范-类文件采用大驼峰(首字母大写)命名、其他采用小驼峰echo与return的区别?return 直接将值返回出来,并停止程序。echo直接显示程序还可以直接执行容易出错。php面向对象和面向过程的区别面向过程就是你把代码封装成子过程或函数(procedure),然后依次去做一件事情; 面向对象就是你把要做的事情抽象成对象,然后告诉具体的那一个对象去做。 面向对象三大特性(封装,继承,多态)使得在做复杂的事情的时候效率和正确率得到保证。17.18.虚拟域名为了安全,让用户只能访问public文件夹 项目部署到其他位置时不出问题 服务器的内容与本地环境一模一样19.控制器控制器名:根据业务流程起名(见明知意) 控制器的类:类名与控制器名一致,首字母大写,采用大驼峰式命名20.common.php应用公共文件使用函数的方法common.phpUser.php21.大写转小写+下划线首字母转小写,后面的大写字母转小写并在前面加下划线 视图层的文件夹名根据控制器名来建立 视图层的模板文件名根据相应控制器的方法来建立栗子:地址栏 http://tp18.com/index.php/GoodsInfo/showMsg模板文件不存在:D:../public/../application/index\view\goods_info\show_msg.html常见的框架:[x] think PHP[ ] zend framework[ ] codelgniter-杭州城市常用[ ] yll framework[x] laravel[ ] cakephp[ ] Ci[ ] symfony关于访问问题正常模式:域名/控制器入口/文件名/函数名域名省略方法:
2019年10月28日
198 阅读
0 评论
0 点赞
1
2