Blogger Information
Blog 70
fans 4
comment 5
visits 104713
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP:【ThinkPHP】=>数据库表达式:普通查询、表达式查询、快捷查询、区间查询、组合查询;原生mysql查询;事务操作 ;翻页功能
JiaJieChen
Original
1124 people have browsed it

PHP:【ThinkPHP】=>数据库表达式:普通查询、表达式查询、快捷查询、区间查询、组合查询;原生mysql查询;事务操作 ;翻页功能

一.数据库表达式

  • 表达式是 SQL 语句的条件

  • 表达式不分大小写

  • 表达式写在 where 里

表达式含义查询方法
=等于
<>不等于
>大于
>=大于等于
<小于
<=小于等于
[NOT] LIKE模糊查询whereLike/whereNotLike
[NOT] BETWEEN(不在)区间查询whereBetween/whereNotBetween
[NOT] IN(不在)IN 查询whereIn/whereNotIn
[NOT] NULL查询字段是否(不)是 NULLwhereNull/whereNotNull
  1. 表达式
    where方法在链式操作方法里面是最常用的方法,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的条件查询操作

    • |LIKE|模糊查询|whereLike/whereNotLike|

    • |[NOT] LIKE|模糊查询|whereLike/whereNotLike|

总而言之,加上not的就是取反,不加not的就是正式

  • 聚合查询

    • 聚合方法查询后:没有数据,返回 0,聚合查询可以配合查询条件

方法功能
count统计数量,参数是要统计的字段名(可选)
max获取最大值,参数是要统计的字段名(必须)
min获取最小值,参数是要统计的字段名(必须)
avg获取平均值,参数是要统计的字段名(必须)
sum获取总数,参数是要统计的字段名(必须)
  • |count|统计数量,参数是要统计的字段名(可选)|

  • |max|获取最大值,参数是要统计的字段名(必须)|

  • |avg|获取平均值,参数是要统计的字段名(必须)|

  • |sum|获取总数,参数是要统计的字段名(必须)|

  • join*    用于对查询的 join 支持    字符串和数组

如果用join多表查询,不限制两个表的id 或者一个表的id,也就是全字段查询,则id会重复,所以下面选择性的查询另外一个表的字段,id则不会重复

二.原生 MySQL

  • query 方法:查询

  • execute 方法:添加和修改

  • getLastsql 调试执行的 SQL 语句

  • fetchSql 调试执行的 SQL 语句,而不执行

  • isEmpty    是否为空

  • toArray    转换为数组

三.thinkphp 事务操作

  • InnoDB引擎支持事务处理,MyISAM不支持事务处理

    • 这两种引擎在表里设置

  • ThinkPHP3.0-5.1 事务开启

    其中时间设置错误,会自动回滚到原点,并不会插入数据

  • ThinkPHP6.0 事务开启

    • transaction 方法操作数据库事务,当闭包中的代码发生异常会自动回滚

      Db::transaction 采用闭包的方式进行事物回滚,只要里面出错就直接回滚到原点

四.模版分页

  • paginate 内置了分页实现,要给数据添加分页输出功能变得非常简单

    • raw 不使用(默认)转义

    • render 获取分页显示

    • total 获取总数量

五.完善博客内容,分类,热门文章,搜索,分页

controller 代码块

public function index()    {           //查询文章和导航相对应绑定的值        $id = Request::get('id',0);        //查询搜索值        $t = Request::get('t',"");        //查询翻页值        $p = Request::get('page',1);        if (isset($id) && !empty($id)) {            //查询分类文章            $boke = Db::table('boke a')            ->field('a.*,c.name')            ->join(['cat' => 'c'],'a.cat = c.id')            ->where("cat",$id)            ->page($p,5)            ->order('date DESC')            ->select();        }else if (isset($t) && !empty($t)){            //查询搜索文章            $boke = Db::table('boke a')            ->field('a.*,c.name')            ->join(['cat' => 'c'],'a.cat = c.id')            ->where('title',"like","%$t%")            ->page($p,5)            ->order('date DESC')            ->select();        }else {            //查询全部文章            $boke = Db::table('boke a')            ->field('a.*,c.name')            ->join(['cat' => 'c'],'a.cat = c.id')            ->page($p,5)            ->order('date DESC')            ->select();        }        //分页模板        $page = Db::table('boke')                ->where('status',1)                ->order('date DESC')                ->paginate(5);        //查询导航字段        $cat = Db::table('cat')                ->where('status',1)                ->order('sort DESC')                ->select();        //查询热门文章        $TopArticle = Db::table('boke')                    ->where('status',1)                    ->order('num DESC')                    ->limit(3)                    ->select();        View::assign([            'boke' => $boke,            'cat' => $cat,            't'=>$t,            'TopArticle' => $TopArticle,            'page' => $page,        ]);        return View::fetch();    }

HTML 代码块

 <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="JiaJieChen个人博客" rel="home">JiaJieChen个人博客</a>          </h1>          <h2 class="site-description">同学们大家好。</h2>        </hgroup>        <nav id="site-navigation" class="main-navigation" role="navigation">          <ul class="nav-menu">            <li>              <a href="/index.html">首页</a>            </li>            {foreach $cat as $cat_v}            <li>              <a href="?id={$cat_v['id']}">{$cat_v['name']}</a>            </li>            {/foreach}          </ul>        </nav>      </header>      <div class="Puax" >        <ul>          <li class="startX" ><a href="#asc">升序</a></li>          <li class="endX" style="display: none;"><a href="#desc">降序</a></li>        </ul>       </div>      <div id="main" class="wrapper">        <div id="primary" class="site-content">          <div id="content" role="main">            {foreach($boke as $boke_v)}            <div id="content" role="main">              <article>                <header class="entry-header">                  <h1 class="entry-title">                    <a href="/details.html" title="构建Nginx和PHP镜像" rel="bookmark">{$boke_v['title']}</a>                  </h1>                </header>                <div class="entry-content">{$boke_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">{$boke_v['date']}</time> </a                  >。 属于 <a href="/index.html?cate=4" title="查看 Linux中的全部文章" rel="category">{$boke_v['name']}</a>分类                </footer>              </article>            </div>            {/foreach}          </div>          <div class="page">            <nav>              <ul class="pagination">               {$page|raw}              </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="{$t}" type="text" class="no-border" name="keywords" id="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 $TopArticle as $TopArticle_k => $TopArticle_v }              <li>                <font style="color: #7a7a7a">{$TopArticle_k+1}</font>&nbsp;                <a href="/details.html?id=20" title="{$TopArticle_v['title']}">{$TopArticle_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>      <script>        $('.startX').click(function () {          $('.startX').css('display','none');          $('.endX').css('display','block');        })        $('.endX').click(function () {          $('.endX').css('display','none');          $('.startX').css('display','block');        })      </script>  </body>
Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post