php笔记之tp5框架_数据库与模型

【1】连接数据库

1.1连接数据库

  1. 全局配置:config/datebase.php
  2. 动态配置:Db::connect(['type' => 'mysql', ...]) //仅该次访问生效
  3. DSN连接:数据库类型://用户名:密码@数据库地址:端口号/数据库名称#字符集
$dsn='mysql://root:root$127.0.0.1:3306/student#utf8';
Db::connect($dsn)

【2】操作数据库

2.1 原生sql:

查:Db::query(sql语句);
写:Db::execute(sql语句);

2.2构造器

<?php

namespace app\db\controller;

use think\Db;

class Data
{
    /**
     * find
     * 单条查询 返回符合条件的第一条记录(否则null ) return 一维数组
     * filed
     *  查询返回指定的字段,没有就等同*,
     *  可通过数组方式添加别名:field(['sid'=>'编号','sname'=>'姓名','gender'=>'性别']) return 别名为下标的数组
     *      别名遇到的问题:
     *          页面错误或者不支持‘编号‘等中文表达式
     *      解决:
     *          1表达式修改为数据库支持格式:(['sid as 编号,sname as 姓名'])
     *          2在\thinkphp\library\think\db\builder\Mysql.php中
     *              搜索 $strict && !preg_match('/^[\w\.\*]+$/' 替换为 $strict && !preg_match('/^[\w\.\*\x7f-\xff]+$/'
     *              让正则验证支持中文
     * where:
     *      单个条件使用表达式
     *      多个条件使用数组
     *      where表达式 可放入find中,主键为默认查询,可省略 find(1)
     *
     */
    function find()
    {
        $re = Db::table('student')
            //->field('sid,sname,gender')
            ->field(['sid' => '编号', 'sname' => '姓名', 'gender' => '性别'])
            ->where('sid', '=', 1)//‘=’可省略,其他不可
            ->find();
        if (is_null($re)) {
            return '为空';
        } else {
            dump($re);
        }
    }

    /**
     * select
     *  多条查询 return 二维数组 没有就返回空数组
     */
    function select()
    {
        $re = Db::table('student')
            // ->field('sid,sname,gender,class_id')
            ->where([
                'gender' => '男',
                'class_id' => 4
            ])->select();
        if (empty($re)) {
            return '没有满足条件的';
        } else {
//            foreach ($re as $k) {
//                dump($k);
//            }
            dump($re);
        }
    }

    /**
     * insert
     * 单条插入 成功返回新增的数量,否则false
     */
    function insert()
    {
        $insSql = [
            'sname' => '武则天',
            'gender' => '女',
            'class_id' => '6'
        ];
        //Db::table('student')->insert($insSql);
        //以下仅mysql支持
        //Db::table('student')->insert($insSql,true);//替换的方式新增
        //Db::table('student')->data($insSql)->insert();//对数据进行包装,提高安全性
        return Db::table('student')->insertGetId($insSql);//返回新增主键id 同时插入返回
    }

    /**
     * insertAll
     * 多条插入
     */
    function insertAll()
    {
        $insAllSql = [
            ['sname' => '安其拉', 'gender' => '女', 'class_id' => '2'],
            ['sname' => '妲己', 'gender' => '女', 'class_id' => '1'],
            ['sname' => '露娜', 'gender' => '女', 'class_id' => '5']
        ];

        return Db::table('student')->insertAll($insAllSql);//返回插入的条数
    }

    /**
     * update
     * 更新
     */
    function update()
    {
//        return Db::table('student') //返回更新条数
//            ->where('sid','24')
//            ->update(['sname'=>'女娲']);
        //如果条件为主键,可以写到update中:
        Db::table('student')
            ->update(['sname' => '女娲', 'id' => 24]);
    }

    /**
     * delete
     * 删除
     */
    function delete()
    {
//        return Db::table('student')//返回删除条数
//            ->where('id','21')
//            ->delete();

        //where可以放到delete中
        Db::table('student')
            ->delete(21);
    }
}

2.3 使用模型

2.3.1创建数据表对应的模型

<?php


namespace app\db\model;


use think\Model;

/**
 * 自定义的student表的模型类
 * 继承模型类
 */

class Student extends Model
{

}

2.3.2 通过该模型操作数据表

<?php

namespace app\db\controller;

use app\db\model\Student;
use think\Db;

/**
 * 模型和一个数据表绑定,并且同名
 * 引入自定义模型
 * 操作数据表时直接通过模型不用再去选择表了,返回一个对象
 */
class Stu
{
    function get()
    {
        //Student:: 等价于 $Db::table('student')

        //获取id为1
        // dump(Student::get(1));

        //使用查询构造器创建复杂的查询
//        $re = Student::field('sid,sname')
//            ->where('sid','1')
//            ->find();

        //获取所有数据
//        $re = Student::all();

        //获取两条数据
//        $re = Student::all([1,2]);

        //使用构造器
        $re = Student::field('sid,sname')
            ->where('sid', 'in', '2,3') //返回第二条和第三条
            ->select();

        //删除
        //Student::delete()...
        //修改
        //新增加入条件即可
        //新增
        //Student::save()...

        dump($re);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值