批改状态:合格
老师批语:很多示例都是自己写的,很不错。
| 标签类型 | 描述 |
|---|---|
| 普通标签 | 主要用于输出变量、函数过滤和做一些基本的运算操作 |
| XML 标签 | 也称为标签库标签,主要完成一些逻辑判断、控制和循环输出,并且可扩展 |
| 运算符 | 示例 |
|---|---|
| + | {$a+$b} |
| - | {$a-$b} |
| * | {$a*$b} |
| / | {$a/$b} |
| % | {$a%$b} |
| ++ | {$a++} 或 {++$a} |
| — | {$a—} 或{—$a} |
| 综合运算 | {$a+$b*10+$c} |
| 三元运算符 | {$a==$b ? ‘yes’ : ‘no’} |
app\controller\Code.php 文件
<?phpnamespace app\controller;use think\facade\View;class Code{public function index(){View::assign('a',100);View::assign('b',21);return View::fetch('index');}}?>
app\view\Code\index.html文件
<!DOCTYPE html><html><head><title>运算符</title></head><body><div>{$a+$b}</div><div>{$a-$b}</div><div>{$a*$b}</div><div>{$a/$b}</div><div>{$a%$b}</div><div>{$a++}</div><div>{++$a}</div><div>{$a--}</div><div>{--$a}</div><div>{$c ? '存在' : '不存在'}</div></body></html>
route\app.php 路由重定向
Route::get('code', 'code/index');
预览地址:http://zhang.com/code 即可

| 方法 | 描述 |
|---|---|
| date | 日期格式化(支持各种时间类型) |
| format | 字符串格式化 |
| upper | 转换为大写 |
| lower | 转换为小写 |
| first | 输出数组的第一个元素 |
| last | 输出数组的最后一个元素 |
| default | 默认值 |
| raw | 不使用(默认)转义 |
| md5 | md5 加密 |
| substr | 截取字符串 |
controller 文件
<?phpnamespace app\controller;use think\facade\View;class Code{public function index(){View::assign('time',1576048640);View::assign('num',10.0032);View::assign('str','OUyangKE');View::assign('arr',['皮特朱','咩咩','欧阳克']);return View::fetch();}}?>
view 文件
<!DOCTYPE html><html><head><title>模版函数 </title></head><body><!-- 日期格式化(支持各种时间类型) --><div>日期格式化{$time|date='Y-m-d H:i:s'}</div><!-- 字符串格式化 --><div>字符串格式化{$num|format='%02d'}</div><!-- 转换为大写 --><div>小写转大写{$str|upper}</div><!-- 转换为小写 --><div>大写转小写{$str|lower}</div><!-- 输出数组的第一个元素 --><div>数组第一个{$arr|first}</div><!-- 输出数组的最后一个元素 --><div>数组最后一个{$arr|last}</div><!-- 默认值 --><div>默认值:{$default|default="该用户很懒,什么也没有留下!"}</div><!-- 截取字符串 --><div>字符串截取{$str|substr=0,3}</div><!-- md5 加密 --><div>md5散列处理{$str|md5}</div><!-- 转换为小写,截取字符串 --><div>调用多个函数{$str|lower|substr=0,3}</div></body></html>

foreach 标签的用法和 PHP 语法非常接近,用于循环输出数组或者对象的属性controller 文件
<?phpnamespace app\controller;use think\facade\View;class Code{public function index(){$arr = [['id'=>1,'name'=>'皮特朱'],['id'=>2,'name'=>'咩咩'],['id'=>3,'name'=>'欧阳克']];View::assign('arr',$arr);return View::fetch();}}?>
view 文件
<!DOCTYPE html><html><head><title>循环标签</title></head><body>{foreach $arr as $k=>$v}<span>索引:{$k}--</span><span>ID:{$v['id']}--</span><span>姓名:{$v['name']}</span><br>{/foreach}</body></html>
volist 循环标签name 模板赋值的变量名称id 当前的循环变量,可以随意起名key 下标,从 1 开始,默认变量 ioffset 开始行数length 获取行数empty 如果数据为空,显示此文字view 文件
<!DOCTYPE html><html><head><title>循环标签</title></head><body>{foreach $arr as $k=>$v}<span>索引:{$k}--</span><span>ID:{$v['id']}--</span><span>姓名:{$v['name']}</span><br>{/foreach}<hr>{volist name="arr" id="v" key="k" offset="0" length="3"}<span>索引:{$k}</span><span>ID:{$v['id']}</span><span>姓名:{$v['name']}</span><br>{/volist}</body></html>

if 判断标签if 标签的用法和 PHP 语法非常接近,用于条件判断controller 文件
<?phpnamespace app\controller;use think\facade\View;class Code{public function index(){View::assign('status',1);View::assign('order_status',4);return View::fetch();}}?>
view 文件
{if $status == 1}<div>开启</div>{/if}{if $status == 0}<div>关闭</div>{else/}<div>开启</div>{/if}{if $order_status == 0}<div>未支付</div>{elseif $order_status == 1/}<div>已支付 待发货</div>{elseif $order_status == 2/}<div>已发货 待收货</div>{elseif $order_status == 3/}<div>已收货 待评论</div>{elseif $order_status == 4/}<div>已完成</div>{else/}<div>已关闭</div>{/if}
switch 判断标签switch 标签的用法和 PHP 语法非常接近,用于条件判断view 文件
<!DOCTYPE html><html><head><title>switch 判断标签</title></head><body>{switch $order_status}{case 0 }<div>未支付</div>{/case}{case 1 }<div>已支付 待发货</div>{/case}{case 2 }<div>已发货 待收货</div>{/case}{case 3 }<div>已收货 待评论</div>{/case}{case 4 }<div>已完成</div>{/case}{/switch}</body></html>
include 标签,引入模版文件load 标签,引入资源文件(css、js)view 文件,把头部和尾部分文件
{include file="public/header" /}{load href="/static/layui/css/layui.css" /}{load href="/static/layui/layui.js" /}{include file="public/bottom" /}
| 标签 | 描述 |
|---|---|
| in | 判断变量是否存在某些值 |
| notin | 判断变量是否不存在某些值 |
| between | 判断变量是否存在某些值 |
| notbetween | 判断变量是否不存在某些范围值 |
| present | 判断某个变量是否 已定义 |
| notpresent | 判断某个变量是否 未定义 |
| empty | 判断某个变量是否为空 |
| notempty | 判断某个变量是否不为空 |
| defined | 判断某个常量是否 已定义 |
| notdefined | 判断某个常量是否 未定义 |
public function index(){View::assign('number',100);View::assign('string','');return View::fetch();}
view 视图
<!DOCTYPE html><html><head><title>Code</title></head><body>{in name="number" value="99,100,101"}<div>number等于99,100,101任意一个值</div>{/in}{notin name="number" value="99,100,101"}<div>number不等于99,100,101任意一个值</div>{/notin}{between name="number" value="1,10"}<div>number等于1 到 10 之间的任意一个值</div>{/between}{notbetween name="number" value="1,10"}<div>number不等于1 到 10 之间的任意一个值</div>{/notbetween}{present name="number"}<div>number已经定义</div>{/present}{notpresent name="n"}<div>n还没有定义</div>{/notpresent}{empty name="string"}<div>name为空值</div>{/empty}{notempty name="string"}<div>name有值</div>{/notempty}{defined name="NAME"}<div>NAME常量已经定义</div>{/defined}{notdefined name="NAME"}<div>NAME常量未定义</div>{/notdefined}</body></html>
else标签
{in name="number" value="99,100,101"}<div>number等于99,100,101任意一个值</div>{else/}<div>number不等于99,100,101任意一个值</div>{/in}{empty name="string"}<div>内容为空</div>{else /}<div>正常显示</div>{/empty}
| 标签 | 描述 |
|---|---|
| eq | 等于 |
| neq | 不等于 |
| gt | 大于 |
| egt | 大于等于 |
| lt | 小于 |
| elt | 小于等于 |
| heq | 恒等于 |
| nheq | 恒不等于 |
public function index(){View::assign("number",100);View::assign("string","zhang");return View::fetch();}
{eq name="number" value="100"}<div>number 等于 100</div>{/eq}{neq name="number" value="101"}<div>number 不等于 101</div>{/neq}{gt name="number" value="33"}<div>number 大于 33</div>{/gt}{egt name="number" value="100"}<div>number 大于等于 100</div>{/egt}{lt name="number" value="200"}<div>number 小于 200</div>{/lt}{elt name="number" value="100"}<div>number 小于等于 100</div>{/elt}{heq name="string" value="zhang"}<div>string 恒等于 zhang</div>{/heq}{heq name="string" value="zhang"}<div>string 恒不等于 zhang</div>{/heq}
| 标签 | 描述 |
|---|---|
| for | 计数循环 |
{for start="0" end="50" step="5" name="i"}{$i}<br/>{/for}
| 标签 | 描述 |
|---|---|
| literal | 原样输出,防止模板标签被解析 |
| php | 使用原生 php 代码,可以在模板文件里面书写任意的 PHP 语句代码 |
{literal}{$name} 这里$name不会被当作变量,而是普通字符{/literal}{php}echo 'zhang';{/php}
think\facade\Request类负责 )调用$_GET $_POST $_REQUEST $_SERVER $_SESSION $_COOKIE $_ENV 等系统变量,以及文件上传信息https://www.kancloud.cn/manual/thinkphp6_0/1037516
| 方法 | 说明 |
|---|---|
| param | 获取当前请求的变量 |
| get | 获取 $_GET 变量 |
| post | 获取 $_POST 变量 |
| put | 获取 PUT 变量 |
| delete | 获取 DELETE 变量 |
| session | 获取 SESSION 变量 |
| cookie | 获取 $_COOKIE 变量 |
| request | 获取 $_REQUEST 变量 |
| server | 获取 $_SERVER 变量 |
| env | 获取 $_ENV 变量 |
| route | 获取 路由(包括PATHINFO) 变量 |
| middleware | 获取 中间件赋值/传递的变量 |
| file | 获取 $_FILES 变量 |
PARAM类型变量是框架提供的用于自动识别当前请求的一种变量获取方式,是系统推荐的获取请求参数的方法param方法会把当前请求类型的参数和路由变量以及GET请求合并,并且路由变量是优先的
namespace app\controller;use app\BaseController;use think\facade\Db;use think\facade\View;use think\facade\Request;class Index extends BaseController{public function index(){echo "<pre>";print_r( $_GET['t'] ); // 原生get接收echo "<br>";print_r( Request::param() ); // 获取当前请求的所有变量echo "<br>";print_r( Request::param('t') ); // 获取当前请求的id变量echo "<br>";print_r( Request::get() );echo "</pre>";/* http://zhang.com/code?t=zhangzhangArray([t] => zhang)zhangArray([t] => zhang)*/$select = Db::table('boke')->select();View::assign(['select' => $select]);return View::fetch('index');}}
<form role="search" action="" method="GET"><div><label class="screen-reader-text" for="t">搜索:</label><input placeholder="搜索" type="text" class="no-border" name="t" id="t"/><input type="submit" class="btn btn-default" value="搜索" /></div></form>$title = Request::get('t');$select = Db::table('boke')->where('title',$title)->select();

namespace app\controller;use app\BaseController;use think\facade\Db;use think\facade\View;use think\facade\Request;class Index extends BaseController{public function index(){echo "<pre>";print_r( $_POST );print_r( Request::post() );print_r( Request::param() );echo "</pre>";$select = Db::table('boke')->where('title',Request::post('t'))->select();View::assign(['select' => $select]);return View::fetch('index');}}<form role="search" action="" method="POST"><div><label class="screen-reader-text" for="t">搜索:</label><input placeholder="搜索" type="text" class="no-border" name="t" id="t"/><input type="submit" class="btn btn-default" value="搜索" /></div></form>

| 序号 | 修饰符 | 作用 |
|---|---|---|
| 1 | s | 强制转换为字符串类型 |
| 2 | d | 强制转换为整型类型 |
| 3 | b | 强制转换为布尔类型 |
| 4 | a | 强制转换为数组类型 |
| 5 | f | 强制转换为浮点类型 |
Request::get('t/d');Request::post('t/s');Request::get('id/d');Request::post('name/s');Request::param('price/f');
use think\facade\Request;
namespace app\controller;use app\BaseController;use think\facade\Db;use think\facade\View;use think\facade\Request;class Index extends BaseController{public function index(){print_r( $_GET );print_r( Request::get() );$select = Db::table('boke')->select();View::assign(['select' => $select]);return View::fetch('index');}}
use think\Request;
namespace app\controller;use app\BaseController;use think\facade\Db;use think\facade\View;use think\Request;class Index extends BaseController{public function index(Request $request){print_r( $_GET );print_r( $request->get() );$select = Db::table('boke')->select();View::assign(['select' => $select]);return View::fetch('index');}}
request() 在任何需要的时候直接调用当前请求对象
namespace app\controller;use app\BaseController;use think\facade\Db;use think\facade\View;class Index extends BaseController{public function index(){print_r( $_GET );print_r( request()->get() );$select = Db::table('boke')->select();View::assign(['select' => $select]);return View::fetch('index');}}
input获取输入数据 支持默认值和过滤
namespace app\controller;use app\BaseController;use think\facade\Db;use think\facade\View;class Index extends BaseController{public function index(){print_r( $_GET );print_r( input('get.') );print_r( input('get.t','') );$select = Db::table('boke')->select();View::assign(['select' => $select]);return View::fetch('index');}}
param 获取当前请求的变量PARAM类型变量是框架提供的用于自动识别当前请求的一种变量获取方式,是系统推荐的获取请求参数的方法param方法会把当前请求类型的参数和路由变量以及GET请求合并,并且路由变量是优先的
namespace app\controller;use app\BaseController;use think\facade\Db;use think\facade\View;use think\facade\Request;class Index extends BaseController{public function index(){print_r( Request::param() );$select = Db::table('boke')->where('title',Request::param('t'))->select();View::assign(['select' => $select]);return View::fetch('index');}}
| 序号 | 方法 | 说明 |
|---|---|---|
| 1 | get | 获取 $_GET 变量 |
| 2 | post | 获取 $_POST 变量 |
| 3 | param | 获取当前请求的变量 |
| 4 | put | 获取 PUT 变量 |
| 5 | delete | 获取 DELETE 变量 |
| 6 | session | 获取 SESSION 变量 |
| 7 | cookie | 获取 $_COOKIE 变量 |
| 8 | request | 获取 $_REQUEST 变量 |
| 9 | server | 获取 $_SERVER 变量 |
| 10 | env | 获取 $_ENV 变量 |
| 11 | route | 获取 路由(包括PATHINFO) 变量 |
| 12 | middleware | 获取 中间件赋值/传递的变量 |
| 13 | file | 获取 $_FILES 变量 |
| 14 | all | 获取包括 $_FILES 变量在内的请求变量,相当于 param+file,版本:V6.0.8+ |
| 方法 | 说明 |
|---|---|
| method | 获取当前请求类型 |
| has | 判断传值是否存在 |
| isGet | 判断是否GET请求 |
| isPost | 判断是否POST请求 |
| isPut | 判断是否PUT请求 |
| isDelete | 判断是否DELETE请求 |
| isAjax | 判断是否AJAX请求 |
| isPjax | 判断是否PJAX请求 |
| isJson | 判断是否JSON请求 |
| isMobile | 判断是否手机访问 |
| isHead | 判断是否HEAD请求 |
| isPatch | 判断是否PATCH请求 |
| isOptions | 判断是否OPTIONS请求 |
| isCli | 判断是否为CLI执行 |
| isCgi | 判断是否为CGI模式 |
| 序号 | 方法 | 说明 |
|---|---|---|
| 1 | host | 当前访问域名或者 IP |
| 2 | scheme | 当前访问协议 |
| 3 | port | 当前访问的端口 |
| 4 | remotePort | 当前请求的 REMOTE_PORT |
| 5 | protocol | 当前请求的 SERVER_PROTOCOL |
| 6 | contentType | 当前请求的 CONTENT_TYPE |
| 7 | domain | 当前包含协议的域名 |
| 8 | subDomain | 当前访问的子域名 |
| 9 | panDomain | 当前访问的泛域名 |
| 10 | rootDomain | 当前访问的根域名 |
| 11 | url | 当前完整 URL |
| 12 | baseUrl | 当前 URL(不含 QUERY_STRING) |
| 13 | query | 当前请求的 QUERY_STRING 参数 |
| 14 | baseFile | 当前执行的文件 |
| 15 | root | URL 访问根地址 |
| 16 | rootUrl | URL 访问根目录 |
| 17 | pathinfo | 当前请求 URL 的 pathinfo 信息(含 URL 后缀) |
| 18 | ext | 当前 URL 的访问后缀 |
| 19 | time | 获取当前请求的时间 |
| 20 | type | 当前请求的资源类型 |
| 21 | method | 当前请求类型 |
| 22 | rule | 当前请求的路由对象实例 |
| 23 | controller | 当前请求的控制器名 |
| 24 | action | 当前请求的操作名 |
echo Request::url();echo '<hr>';echo Request::url(true);echo '<hr>';echo Request::host();echo '<hr>';echo Request::controller();echo '<hr>';echo Request::action();echo '<hr>';

print_r( Request::header() );print_r( Request::header('ACCEPT_encoding') );

查询构造器:https://www.kancloud.cn/manual/thinkphp6_0/1037532
链式操作:https://www.kancloud.cn/manual/thinkphp6_0/1037538
cat 表、修改 boke 表的cat分类值为cat表中对应的id
CREATE TABLE `cat` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL COMMENT '分类名',`sort` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '排序',`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 0关闭',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;INSERT INTO `cat` VALUES ('1', 'Layui', '0', '1');INSERT INTO `cat` VALUES ('2', 'PHP', '0', '1');INSERT INTO `cat` VALUES ('3', 'ThinkPHP', '0', '1');INSERT INTO `cat` VALUES ('4', '前端', '0', '1');INSERT INTO `cat` VALUES ('5', '小程序', '0', '1');INSERT INTO `cat` VALUES ('6', '服务器', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('1', '修改后的标题', 'https://img.php.cn/upload/course/000/000/001/5d242759adb88970.jpg', 'PHP中文网因专业的讲师水平和高效的视频质量,推出的各种视频课程系列一直以来都深受大家喜爱。特别是《天龙八部》系列、《独孤九贱》系列、《玉女心经》系列的原创课程在行业内更是具有强大的影响力,好评不断!为了让大家能更快速方便的寻找到相关教程资源,我们在这篇文章中特意将《天龙八部》系列课程整理出来供大家有针对性得学习!', '2021-02-18', '2', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('2', 'php中文网《玉女心经》公益PHP WEB培训系列课程汇总', 'https://img.php.cn/upload/course/000/126/153/5aa23f0ded921649.jpg', 'php中文网近期推出的《独孤九贱》系列、《天龙八部》系列、《玉女心经》原创视频课程,好评如潮!由于《玉女心经》系列课程没有做成专题,所以大家找起来有点费劲,为了更好的服务广大php中文网粉丝们,特把课程整理汇总给大家!', '2021-02-11', '2', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('3', 'html5中submit是按钮么', NULL, 'html5中submit是按钮,它是button的一个特例,它把提交这个动作自动集成了。submit会自动将表单的数据提交,使用submit时需要验证要加return', '2021-02-10', '4', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('4', 'css如何去除下划线', NULL, 'css去除下划线的方法:首先创建一个HTML示例文件;然后在body中定义一个a标签;最后通过css属性为“a{text-decoration:none}”去除下划线即可。', '2021-02-01', '4', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('5', 'linux如何查看进程', 'https://img.php.cn/upload/article/202102/24/2021022409272725770.jpg', 'windows defender是windows系统自带的一款杀毒软件,对于很多人来说,这款软件不仅没有起到保护电脑的作用,还增加了很多不必要的麻烦。比如我们安装了一些破解版软件,windows defender就会杀这些破解软件,很让人讨厌。', '2021-02-01', '6', '1', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('6', 'Ubuntu20.04/18.04下安装或更新至PHP8', 'https://img.php.cn/upload/article/000/000/020/2c02ff679ec7afab974a691aac09d535-0.png', '本指南让你了解如何安装最新的 php 版本 8,并在你的任何 VPS、云服务器、专用主机上的 Ubuntu 20.0 或 18.04 系统中升级到最新版本,并将其配置为 Apache 和 Nginx。', '2021-02-01', '2', '5', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('7', 'PHP 8新特性之JIT对PHP应用性能的影响', NULL, '即将发布的 PHP 8 最受大家关注的新特性就是引入了对 JIT 的支持,我已经简单介绍了 JIT 是什么,以及与 Opcache 的区别', '2021-02-01', '2', '97', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('8', '详解PHP7中的zval结构和引用计数机制', 'https://img.php.cn/upload/article/000/000/024/6053286f637d2966.jpg', '最近在查阅 PHP7 垃圾回收的资料的时候,网上的一些代码示例在本地环境下运行时出现了不同的结果,使我一度非常迷惑。 仔细一想不难发现问题所在:这些文章大多是 PHP5.x 时代的,而 PHP7 发布后,采用了新的 zval 结构,相关的资料也比较贫瘠,所以我结合一些资料做了一个总结,主要侧重于解释新 zval 容器中的引用计数机制,如有谬误,还望不吝指教。', '2021-01-01', '2', '185', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('9', 'php登录失败怎么处理', 'https://img.php.cn/upload/article/202103/19/2021031909102812621.jpg', 'php登录失败的处理方法:首先创建一个表负责记录用户登录的信息;然后从user_login_info表查询最近30分钟内有没有相关密码错误的记录;接着统计记录总条数是否达到设定的错误次数;最后设置登录密码错误次数限制即可。', '2021-01-01', '2', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('10', 'php如何去掉字符串末尾字符', 'https://img.php.cn/upload/article/000/000/024/6053250623ecf930.jpg', 'php去掉字符串末尾字符的方法:1、直接使用substr()函数倒序裁掉最后一位字符,语法“substr(string,0,-1)”;2、使用rtrim()函数,语法“rtrim(string,charlist)”。', '2021-01-01', '2', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('11', 'php异常和错误的区别是什么', 'https://img.php.cn/upload/article/202103/18/2021031817511956954.jpg', 'php异常和错误的区别:1、PHP错误是属于php程序自身的问题,一般是由非法的语法,环境问题导致的;2、PHP异常一般是业务逻辑上出现的不合预期、与正常流程不同的状况,不是语法错误。', '2021-01-01', '2', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('12', 'linux下如何查看php-fpm是否安装', 'https://img.php.cn/upload/article/000/000/024/60532042dd48f908.jpg', 'linux下查看php-fpm是否安装的方法:打开终端,执行“whereis php-fpm”或者“find / -name php-fpm”命令,如果成功输出php-fpm的安装位置,则表示有安装。', '2021-01-01', '2', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('13', 'php的数据库修改语句是什么', 'https://img.php.cn/upload/article/202103/18/2021031817353472746.jpg', 'php的数据库修改语句是UPDATE,用于更新数据库表中已存在的记录,语法为【UPDATE table_name SET column1=value, column2=value2,...WHERE some_column=some 】。', '2021-01-01', '2', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('14', 'php怎么设置状态码', 'https://img.php.cn/upload/article/000/000/024/60531da39e7a2975.jpg', '在php中,可以使用http_response_code()函数来设置状态码,该函数用于设置响应的HTTP状态码,语法格式“http_response_code (状态码) ”。', '2021-01-01', '2', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('15', 'excel怎么冻结选定区域', 'https://img.php.cn/upload/article/202103/18/2021031817270344979.jpg', 'excel冻结选定区域的方法:首先选定你想固定不变的位置;然后点击表格最上面的菜单栏“视图”那里,再点击“冻结窗格”下方的“冻结窗格”即可。', '2021-01-01', '2', '0', '0', '1');INSERT INTO `boke` (`id`, `title`, `img`, `content`, `date`, `cat`, `num`, `hot`, `status`) VALUES ('16', '在线考试系统实战【公益直播】', 'https://img.php.cn/upload/course/000/000/001/60862c6ba99af257.png', '三天大型公益直播课《模仿驾校考试系统实战开发》,使用框架: bootstrap、jquery、ThinkPHP6.0', '2021-05-06', '2', '0', '0', '1');
where 查询条件
// 查询id为10并且状态为1的记录$find = Db::table('boke')->where('id',10)->where('status',1)->find();print_r($find);

table 和 nametable方法主要用于指定操作的数据表https://www.kancloud.cn/manual/thinkphp6_0/1037540
table方法指定的数据表需要完整的表名,但可以采用name方式简化数据表前缀的传入,例如:
Db::table('think_user')->where('status>1')->select();Db::table('db_name.think_user')->where('status>1')->select();Db::name('user')->where('status>1')->select();
会自动获取当前模型对应的数据表前缀来生成 think_user 数据表名称。
// name和table功能一样都是指定表名称$select = Db::name('boke')->select();print_r($select);$select = Db::table('boke')->select();print_r($select);// 注意:这里多表查询记录数为表1*表2总条数// table可以一次查询多张表 '表1,表2'$select = Db::table('boke,cat')->select();print_r($select);// 可以设置表别名 '表1 别名1,表2 别名1'$select = Db::table('boke b,cat c')->select();print_r($select);// 也可以数组形式传递多张表名称$select = Db::table(['boke','cat'])->select();print_r($select);// 数组形式传递表设置别名是以键值对的方式$select = Db::table(['boke' => 'b','cat' => 'c'])->select();print_r($select);
database.phpcat 表、 boke 表,都加上 zs_ 前缀
use think\facade\Env;return ['connections' => ['mysql' => [// 数据库表前缀'prefix' => Env::get('database.prefix', 'zs_'),]]];
field 和 withoutField 返回值field方法主要作用是标识要返回或者操作的字段,可以用于查询和写入操作。https://www.kancloud.cn/manual/thinkphp6_0/1037542
// field是指定包含哪些字段 参数和table一样,可以是字符串和数组,字符串的话字段名逗号隔开要全部放到引号中$select = Db::table('boke')->field('id,title')->where('status',1)->select();print_r($select);$select = Db::table('boke')->field('id,title as t')->where('status',1)->select();print_r($select);$select = Db::table('boke')->field(['id','title'])->where('status',1)->select();print_r($select);$select = Db::table('boke')->field(['id','title'=>'t'])->where('status',1)->select();print_r($select);// *号表示查询所有字段,默认不写就是全部字段$select = Db::table('boke')->field('*')->where('status',1)->select();print_r($select);// withoutField是指定除了哪些字段不查询$select = Db::table('boke')->withoutField('id,title')->where('status',1)->select();print_r($select);$select = Db::table('boke')->withoutField(['id','title'])->where('status',1)->select();print_r($select);
order 排序https://www.kancloud.cn/manual/thinkphp6_0/1037546
asc ASC 正序 默认desc DESC 倒序
$select = Db::table('boke')->field('id,title')->where('status',1)->order('id')->select();print_r($select);$select = Db::table('boke')->field('id,title')->where('status',1)->order('id desc')->select();print_r($select);
page 和 limit 翻页limit方法主要用于指定查询和操作的数量https://www.kancloud.cn/manual/thinkphp6_0/1037544
https://www.kancloud.cn/manual/thinkphp6_0/1037545
// 从第一条开始取出五条$select = Db::table('boke')->field('id,title')->where('status',1)->order('id desc')->limit(5)->select();print_r($select);// 从第六条开始取出五条$select = Db::table('boke')->field('id,title')->where('status',1)->order('id desc')->limit(6,5)->select();print_r($select);// 第一页五条$select = Db::table('boke')->field('id,title')->where('status',1)->order('id desc')->page(1,5)->select();print_r($select);// 第二页五条$select = Db::table('boke')->field('id,title')->where('status',1)->order('id desc')->page(1,5)->select();print_r($select);$content = Db::name('boke')->field('id,title')->page(input('get.page','1'),3)->select()->toArray();print_r($content);

count 统计数量
// 统计状态为1的数据条数$count = Db::table('boke')->field('id,title')->where('status',1)->count();echo $count;
save 写入数据save方法统一写入数据,自动判断是新增还是更新数据(以写入数据中是否存在主键数据为依据)。
public function index(){# 添加数据$data = ['cat'=>'2','title'=>'美特斯邦威七分牛仔裤女2018夏季新款中腰修身洗水牛仔裤商场款','price'=>'49.90','add_time'=>time()];$save = Db::table('shop_goods')->save($data);print_r($save);# 因为主键是唯一的且自增的,数据中包含主键为修改该条记录,没有默认为添加记录# 修改数据$data = ['price'=>'99.00','id'=>3];$save = Db::table('shop_goods')->save($data);print_r($save);}
更多请查看:https://www.kancloud.cn/manual/thinkphp6_0/1037538
系统支持的链式操作方法包含:
| 连贯操作 | 作用 | 支持的参数类型 |
|---|---|---|
| where* | 用于AND查询 | 字符串、数组和对象 |
| whereOr* | 用于OR查询 | 字符串、数组和对象 |
| whereTime* | 用于时间日期的快捷查询 | 字符串 |
| table | 用于定义要操作的数据表名称 | 字符串和数组 |
| alias | 用于给当前数据表定义别名 | 字符串 |
| field* | 用于定义要查询的字段(支持字段排除) | 字符串和数组 |
| order* | 用于对结果排序 | 字符串和数组 |
| limit | 用于限制查询结果数量 | 字符串和数字 |
| page | 用于查询分页(内部会转换成limit) | 字符串和数字 |
| group | 用于对查询的group支持 | 字符串 |
| having | 用于对查询的having支持 | 字符串 |
| join* | 用于对查询的join支持 | 字符串和数组 |
| union* | 用于对查询的union支持 | 字符串、数组和对象 |
| view* | 用于视图查询 | 字符串、数组 |
| distinct | 用于查询的distinct支持 | 布尔值 |
| lock | 用于数据库的锁机制 | 布尔值 |
| cache | 用于查询缓存 | 支持多个参数 |
| with* | 用于关联预载入 | 字符串、数组 |
| bind* | 用于数据绑定操作 | 数组或多个参数 |
| comment | 用于SQL注释 | 字符串 |
| force | 用于数据集的强制索引 | 字符串 |
| master | 用于设置主服务器读取数据 | 布尔值 |
| strict | 用于设置是否严格检测字段名是否存在 | 布尔值 |
| sequence | 用于设置Pgsql的自增序列名 | 字符串 |
| failException | 用于设置没有查询到数据是否抛出异常 | 布尔值 |
| partition | 用于设置分区信息 | 数组 字符串 |
| replace | 用于设置使用REPLACE方式写入 | 布尔值 |
| extra | 用于设置额外查询规则 | 字符串 |
| duplicate | 用于设置DUPLCATE信息 | 数组 字符串 |
所有的连贯操作都返回当前的模型实例对象(this),其中带*标识的表示支持多次调用。
| 方法 | 描述 |
|---|---|
| toArray | 转换为数组 |
| isEmpty | 是否为空 |
| all | 所有数据 |
| merge | 合并其它数据 |
| diff | 比较数组,返回差集 |
| flip | 交换数据中的键和值 |
| intersect | 比较数组,返回交集 |
| keys | 返回数据中的所有键名 |
| pop | 删除数据中的最后一个元素 |
| shift | 删除数据中的第一个元素 |
| unshift | 在数据开头插入一个元素 |
| push | 在结尾插入一个元素 |
| reduce | 通过使用用户自定义函数,以字符串返回数组 |
| reverse | 数据倒序重排 |
| chunk | 数据分隔为多个数据块 |
| each | 给数据的每个元素执行回调 |
| filter | 用回调函数过滤数据中的元素 |
| column | 返回数据中的指定列 |
| sort | 对数据排序 |
| order | 指定字段排序 |
| shuffle | 将数据打乱 |
| slice | 截取数据中的一部分 |
| map | 用回调函数处理数组中的元素 |
| where | 根据字段条件过滤数组中的元素 |
| whereLike | Like查询过滤元素 |
| whereNotLike | Not Like过滤元素 |
| whereIn | IN查询过滤数组中的元素 |
| whereNotIn | Not IN查询过滤数组中的元素 |
| whereBetween | Between查询过滤数组中的元素 |
| whereNotBetween | Not Between查询过滤数组中的元素 |
public function index(){$select = Db::table('shop_goods')->select();if($select->isEmpty()){echo '未找到数据';}print_r($select->shuffle()->toArray());}
* 标识的表示支持多次调用| 连贯操作 | 作用 | 支持的参数类型 |
|---|---|---|
where* |
用于 AND 查询 | 字符串、数组和对象 |
| table | 用于定义要操作的数据表名称 | 字符串和数组 |
| name | 用于定义要操作的数据表名称 | 字符串 |
field* |
用于定义要查询的字段(支持字段排除) | 字符串和数组 |
order* |
用于对结果排序 | 字符串和数组 |
| limit | 用于限制查询结果数量 | 字符串和数字 |
| page | 用于查询分页(内部会转换成 limit) | 字符串和数字 |
<?phpnamespace app\controller;use app\BaseController;use think\facade\View;use think\facade\App;use think\facade\Db;class Index extends BaseController{public function index(){$p = input('get.p',1);$c = input('get.c',0);$t = input('get.t','');$num = 5;$cat = Db::table('cat')->select();if($c != 0){$count = Db::table('boke')->where('status',1)->where('cat',$c)->count();$select = Db::table('boke')->where('status',1)->where('cat',$c)->page($p,$num)->select()->toArray();}else if(!empty($t)){$count = Db::table('boke')->where('status',1)->where('title',$t)->count();$select = Db::table('boke')->where('status',1)->where('title',$t)->page($p,$num)->select()->toArray();}else{$count = Db::table('boke')->where('status',1)->count();$select = Db::table('boke')->where('status',1)->page($p,$num)->select()->toArray();}foreach ($select as &$value) {$catname = Db::table('cat')->field('name')->where('id',$value['cat'])->find();$value['cat'] = $catname['name'];}$hot = Db::table('boke')->field('title')->limit(4)->order('num','asc')->select();View::assign(['p' => $p,'c' => $c,'t' => $t,'cat' => $cat,'select' => $select,'count' => ceil($count/$num),'hot' => $hot]);return View::fetch('index');}}
view 首页文件
<!DOCTYPE html><html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>首页 - zhang个人博客</title><meta name="keywords" content="博客,个人博客,zhang个人博客,PHP"/><meta name="description" content="zhang是php开发路上的学习萌萌新,愿意把知识分享给大家。" /><link rel="stylesheet" id="twentytwelve-style-css" href="/static/css/index.css" type="text/css" media="all" /><style type="text/css" id="custom-background-css">body.custom-background {background-color:#e6e6e6;}input.btn-default:focus,input.no-border:focus {outline:none;}input.no-border {font-size:15px;}</style><script type="text/javascript" src="/static/js/jquery.js"></script><script type="text/javascript" src="/static/js/nav.js"></script></head><body class="home blog custom-background custom-font-enabled single-author"><div id="page" class="hfeed site"><header id="masthead" class="site-header" role="banner"><hgroup><h1 class="site-title"><a href="/" title="zhang个人博客" rel="home">zhang个人博客</a></h1><!-- <h2 class="site-description">zhang是php开发路上的学习萌萌新,愿意把知识分享给大家。</h2> --></hgroup><nav id="site-navigation" class="main-navigation" role="navigation"><ul class="nav-menu"><li><a href="/">首页</a></li>{if($cat)}{foreach $cat as $cat_v}<li><a href="?c={$cat_v['id']}">{$cat_v['name']}</a></li>{/foreach}{/if}</ul></nav></header><div id="main" class="wrapper"><div id="primary" class="site-content">{empty name="$select"}<div>该分类占无内容……</div>{else/}{foreach($select as $select_v)}<div id="content" role="main"><article><header class="entry-header"><h1 class="entry-title"><a href="/Content/details?id={$select_v['id']}" title="构建Nginx和PHP镜像" rel="bookmark">{$select_v['title']}</a></h1></header><div class="entry-content">{$select_v['content']}……</div><footer class="entry-meta">发布于<a href="/index.html?time=2020-10-02" title="2020-10-02" rel="bookmark"><time class="entry-date" datetime="2020-10-02">{$select_v['date']}</time></a>。 属于<a href="/index.html?c=4" title="查看 Linux中的全部文章" rel="category">{$select_v['cat']}</a> 分类</footer></article></div>{/foreach}{/empty}<div class="page"><nav><ul class="pagination">{if $p<=1}<li class="page-item disabled" aria-disabled="true" aria-label="« 上一页"><span class="page-link" aria-hidden="true">‹</span></li>{else /}<li class="page-item"><a class="page-link" href="?p={$p-1}&c={$c}&t={$t}" rel="next" aria-label="上一页 ‹">‹</a></li>{/if}{if $p>=$count}<li class="page-item disabled" aria-disabled="true" aria-label="» 下一页"><span class="page-link" aria-hidden="true">»</span></li>{else /}<li class="page-item"><a class="page-link" href="?p={$p+1}&c={$c}&t={$t}" rel="next" aria-label="下一页 »">›</a></li>{/if}</ul></nav></div></div><div id="secondary" class="widget-area" role="complementary"><aside id="search-2" class="widget widget_search"><form role="search" id="searchform" action="" method="POST"><div><label class="screen-reader-text" for="t">搜索:</label><input placeholder="搜索" type="text" class="no-border" name="keywords" id="t" value="{$t}" /><input type="submit" class="btn btn-default" id="searchsubmit" value="搜索" /></div></form><script type="text/javascript">$(function (){$("#searchsubmit").click(function (){if($("#t").val() != '') {location.href = "/index.html?t="+$("#t").val();}return false;});});</script></aside><aside id="recent-posts-2" class="widget widget_recent_entries"><h3 class="widget-title">热门文章</h3><ul>{foreach $hot as $k=>$v}<li><font style="color:#7a7a7a;">[{$k+1}]</font> <a href="/Content/details?id={$v['id']}" title="12">{$v['title']}</a></li>{/foreach}</ul></aside></div></div><footer id="colophon" role="contentinfo"><div class="site-info"><span>友情链接:</span><a href="https://www.php.cn" target="_blank">PHP中文网</a></div></footer><footer role="contentinfo" style="margin-top:0;"><div class="site-info" style="text-align:center;"><span><a href="https://beian.miit.gov.cn" target="_blank">苏ICP备2020058653号-1</a></span></div></footer></div></body></html>
controller\Content.php 详情页
<?phpnamespace app\controller;use app\BaseController;use think\facade\View;use think\facade\Db;class Content extends BaseController{public function details(){$id = input('get.id');$content = Db::table('boke')->field('content,title')->where('id',$id)->find();$s = Db::table('boke')->field('title')->where('id',$id-1)->find();$x = Db::table('boke')->field('title')->where('id',$id+1)->find();$cat = Db::table('cat')->select();$hot = Db::table('boke')->field('id,title')->limit(4)->order('num','asc')->select();View::assign(['id' => $id,'cat' => $cat,'hot' => $hot,'content'=>$content,'s'=>$s,'x'=>$x]);return View::fetch();}}
view\Content\details.html 文章详情页
<!DOCTYPE html><html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>首页 - zhang个人博客</title><meta name="keywords" content="博客,个人博客,zhang个人博客,PHP"/><meta name="description" content="zhang是php开发路上的学习萌萌新,愿意把知识分享给大家。" /><link rel="stylesheet" id="twentytwelve-style-css" href="/static/css/index.css" type="text/css" media="all" /><style type="text/css" id="custom-background-css">body.custom-background {background-color:#e6e6e6;}input.btn-default:focus,input.no-border:focus {outline:none;}input.no-border {font-size:15px;}</style><script type="text/javascript" src="/static/js/jquery.js"></script><script type="text/javascript" src="/static/js/nav.js"></script></head><body class="home blog custom-background custom-font-enabled single-author"><div id="page" class="hfeed site"><header id="masthead" class="site-header" role="banner"><hgroup><h1 class="site-title"><a href="/" title="zhang个人博客" rel="home">zhang个人博客</a></h1><!-- <h2 class="site-description">zhang是php开发路上的学习萌萌新,愿意把知识分享给大家。</h2> --></hgroup><nav id="site-navigation" class="main-navigation" role="navigation"><ul class="nav-menu"><li><a href="/index.html">首页</a></li>{if($cat)}{foreach $cat as $cat_v}<li><a href="/?c={$cat_v['id']}">{$cat_v['name']}</a></li>{/foreach}{/if}</ul></nav></header><div id="main" class="wrapper"><div id="primary" class="site-content"><div id="content" role="main"><article><header class="entry-header"><h1 class="entry-title">{$content['title']}</h1></header><div class="entry-content ql-editor" id="md-editor" style="padding: 0;">{$content['content']}</div><footer class="entry-meta">发布于<a href="/index.html?time=2020-10-02" title="2020-10-02" rel="bookmark"><time class="entry-date" datetime="2020-10-02">2020-10-02</time></a>。 属于<a href="/index.html?cate=4" title="查看 Linux中的全部文章" rel="category">Linux</a> 分类</footer></article><nav class="nav-single"><div class="prev">上一篇:<a href="/Content/details?id={$id-1}">{$s['title']}</a></div><div class="prev">下一篇:<a href="/Content/details?id={$id+1}">{$x['title']}</a></div></nav></div></div><div id="secondary" class="widget-area" role="complementary"><aside id="search-2" class="widget widget_search"><form role="search" id="searchform" action="" method="POST"><div><label class="screen-reader-text" for="t">搜索:</label><input placeholder="搜索" type="text" class="no-border" name="keywords" id="t" value="{$t}" /><input type="submit" class="btn btn-default" id="searchsubmit" value="搜索" /></div></form></aside><aside id="recent-posts-2" class="widget widget_recent_entries"><h3 class="widget-title">热门文章</h3><ul>{foreach $hot as $k=>$v}<li><font style="color:#7a7a7a;">[{$k+1}]</font> <a href="/Content/details?id={$v['id']}" title="12">{$v['title']}</a></li>{/foreach}</ul></aside></div></div><footer id="colophon" role="contentinfo"><div class="site-info"><span>友情链接:</span><a href="https://www.php.cn" target="_blank">PHP中文网</a></div></footer><footer role="contentinfo" style="margin-top:0;"><div class="site-info" style="text-align:center;"><span><a href="https://beian.miit.gov.cn" target="_blank">苏ICP备2020058653号-1</a></span></div></footer></div></body></html>





最近朋友圈里火了好多好玩的小玩意,小编看到后立马给大家更新了!这次带来了三个超级好玩的功能游戏机、小空调和小电视。
本人朋友圈已安装
小空调:https://h5ma.com/11c
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号