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

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值