Web开发 | ThinkPHP 3.2.3 - 04.ThinkPHP与数据库2

本文详细介绍了ThinkPHP 3.2.3中的数据库操作,包括聚合函数、添加数据记录(数组方式和AR方法)、收集表单数据、数据修改、删除数据及原生SQL执行。讲解了having()、where()方法的区别,以及count(), sum(), avg(), max(), min()等聚合函数的使用。同时,展示了如何通过create()方法实现表单数据收集,以及save()方法的注意事项。此外,还涉及到了商品信息的修改和表单验证的实现。" 126713150,8753399,C#泛型AVLTree实现及完整源码解析,"['C#开发', '数据结构与算法', '哈希算法']
摘要由CSDN通过智能技术生成

1.聚合函数及having使用细节

$info = $goods -> where() -> field(字段) -> select();

select()方法

  1、返回一个二维数组信息
  2、返回全部数据表信息
  3、给该方法传递参数
    1) select(20) 查询主键值等于30的记录信息
    2) select(“20,21,22,23”); 查询主键值等于20,21,22,23的记录信息
  shop/Admin/Controller/GoodsController.class.php
程序代码如下:

    public function showlist(){
        $goods = D("Goods");
        //查询主键值等于30的记录信息
        //$info = $goods -> select(30);
        //查询主键值等于20,21,22,23的记录信息
        $info = $goods -> select("20,21,22,23");
        //把数据assign到模板
        $this -> assign('info',$info);
        $this->display();
    }

  4、find()如果我们查询的结果只有一个信息,使用select()会返回一个二维数组,为了使用方便我们可以返回一个一维数组,这时候可使用find()方法
  shop/Admin/Controller/GoodsController.class.php
程序代码如下:

    public function showlist(){
   
        $goods = D("Goods");
        $info = $goods -> find(30); //返回一维数组结果
        show_bug($info);
        $this->display();
    }

  5、having()方法设置查询条件,where()方法设置查询条件

having()和where()区别

  1)、使用有先后顺序
  2)、where price>100 having price>100
  3)、where设置条件,字段必须是数据表中存在的字段
  4)、having设置条件,字段必须是selec语句查询出来的字段

        //两者都能使用的情况
        select goods_price,goods_number from sw_goods where goods_price>100   //正确
        select goods_price,goods_number from sw_goods having goods_price>100   //正确

        //只可以使用where,不可以使用having
        select goods_name,goods_number from sw_goods where goods_price>100   //正确
        select goods_name,goods_number from sw_goods having goods_price>100   //错误

        //只可以使用having,不可以使用where
        //查询每种goods_category_id商品的价格平均值,获得平均价格大于1000的种类信息
        select goods_category_id,avg(goods_price) as ag from sw_goods where ag>1000 group by goods_category_id   //错误
        select goods_category_id,avg(goods_price) as ag from sw_goods group by goods_category_id having ag>1000   //正确

  shop/Admin/Controller/GoodsController.class.php
程序代码如下:

    public function showlist(){
        $goods = D("Goods");
        $info = $goods -> having('goods_price > 1000') -> select();
        //把数据assign到模板
        $this -> assign('info',$info);
        $this->display();
    }

  6、相关聚合函数 count() sum() avg() max() min()
    以上聚合函数是最后被调用的方法,可以结合具体条件方法使用
  shop/Admin/Controller/GoodsController.class.php
程序代码如下:

    public function showlist(){
        $goods = D("Goods");
        //查询记录总条数
        echo $goods -> count();
        echo "<br/>";
        //获得价格最高的商品信息
        echo $goods -> max('goods_price');
        echo "<br/>";
        //获得价格大于1000的商品总数
        echo $goods -> where('goods_price > 1000') -> count();
        echo "<br/>";

        //此时limit()不起效果
        //运行时默认为limit(1)
        echo $goods -> limit(5) -> where('goods_price > 1000') -> count();

        //把数据assign到模板
        $this -> assign('info',$info);
        $this->display();
    }

2.添加数据记录add

两种方式实现数据添加
两种方式都返回被添加的新记录的主键id值

数组方式实现数据添加

  shop/Admin/Controller/GoodsController.class.php
程序代码如下:

    //添加商品
    public function add(){
   
        //利用数组方式实现数据添加
        $goods = D("Goods");
        $ar = array(
                'goods_name' => '红米Pro',
                'goods_price' => 1000,
                'goods_number' => 53,
            );
        //goods_name、goods_price、goods_number是数据表中字段名称
        $rst = $goods -> add($ar);
        show_bug($rst);
        if ($rst > 0) {
            echo "success";
        }else{
            echo "failure";
        }

        $this->display();
    }
AR方法实现数据添加

TP框架中的AR是假的,但是可以实现

  1、ActiveRecord 活跃记录
  2、AR规定了程序与数据库之间的关系
    1)、一个数据表对应一个类Model
    2)、一条数据记录对应类的一个对象
    3)、每个字段对应该对象的具体属性

  shop/Admin/Controller/GoodsController.class.php
程序代码如下:

    //添加商品
    public function add(){
   

        //利用AR方式实现数据添加
        $goods = D("Goods");
        $goods -> goods_name = '红米';
        $goods -> goods_price = 1200;
        $goods -> goods_number = 53;

        $rst = $goods -> add($ar);
        show_bug($rst);
        if ($rst > 0) {
            echo "success";
        }else{
            echo "failure";
        }

        $this->display();
    }

3.收集表单数据并实现收集添加

制作一个表单

  shop/Admin/View/Goods/add.html
程序代码如下:

        /* 常量__SELF__对应的路径为:ThinkPHP/shop/index.php/Admin/Goods/add */
        <form action="{$smarty.const.__SELF__}" method="post" enctype="multipart/form-data">
            <table border="1" width="100%" class="table_a">
                <tr>
                    <td>商品名称</td>
                    <td><input type="text" name="goods_name" /></td>
                </tr>
                <tr>
                    <td>商品价格</td>
                    <td><input type="text" name="goods_price" /></td>
                </tr>
                <tr>
                    <td>商品数量</td
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值