国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

控制器類(lèi)查詢(xún)構(gòu)造器和原生查詢(xún)總結(jié)

Original 2018-12-15 21:39:13 264
abstract:一.數(shù)據(jù)庫(kù)配置:    靜態(tài)配置:在和應(yīng)用目錄同級(jí)的config/database.php中進(jìn)行配置    動(dòng)態(tài)配置:使用connect()進(jìn)行配置二.原生查詢(xún)     代碼中直接寫(xiě)原生sql語(yǔ)句 叫做原生查詢(xún)    需要引用th

一.數(shù)據(jù)庫(kù)配置:

    靜態(tài)配置:在和應(yīng)用目錄同級(jí)的config/database.php中進(jìn)行配置

    動(dòng)態(tài)配置:使用connect()進(jìn)行配置

二.原生查詢(xún)

     代碼中直接寫(xiě)原生sql語(yǔ)句 叫做原生查詢(xún)

    需要引用think\Db類(lèi)  use think\Db;

    查詢(xún):不僅僅是讀,還包括寫(xiě)操作,CURD :增刪改查

    execute()專(zhuān)用做寫(xiě)操作:新增,更新,刪除   可以使用占位符來(lái)對(duì)sql語(yǔ)句進(jìn)行賦值   :占位符   通用占位符為?不推薦使用   

    query()用作讀操作,也就是查詢(xún)操作   可以使用占位符來(lái)對(duì)sql語(yǔ)句進(jìn)行賦值   :占位符   通用占位符為?不推薦使用   

    如下

  public function select()
    {
        //查詢(xún)staff表,salary大于5000的員工信息
        $sql = "SELECT `name`,`salary` FROM `staff` WHERE `salary`>5000 LIMIT 5";
        //用通用占位符"?",防止sql注入攻擊
        $sql = "SELECT `name`,`salary` FROM `staff` WHERE `salary`>? LIMIT ?";
        //用命名占位符":"
        $sql = "SELECT `name`,`salary` FROM `staff` WHERE `salary`> :salary LIMIT :limit";
        //通用占位符 ,順序不可改變
//        $res = Db::query($sql,[5000,5]);
        //命名占位符,順序可以改變,
//        $res = Db::query($sql,['salary'=>5000,'limit'=>5]);
        //使用占位符,傳入INT類(lèi)型,需要限定下格式 \PDO::PARAM_格式  
        $res = Db::query($sql,['salary'=>[5000,\PDO::PARAM_INT],'limit'=>[5,\PDO::PARAM_INT]]);

        dump($res);
    }
     
     //更新操作
     public function update()
{
    //將id=10的員工,工資修改為7000
    $sql = "UPDATE `staff` SET `salary`=:salary WHERE `staff_id` = :staff_id";
    //依舊是整數(shù)類(lèi)型 ,限定下類(lèi)型,否則傳入字符串類(lèi)型
    Db::execute($sql,['salary'=>[7000,\PDO::PARAM_INT],'staff_id'=>[10,\PDO::PARAM_INT]]);

    //如果更新失敗,會(huì)自動(dòng)終止運(yùn)行并拋出異常
    return '更新成功';
}

三.查詢(xún)構(gòu)造器

    1.查詢(xún)操作   返回一個(gè)二位數(shù)組 沒(méi)有匹配的記錄則返回一個(gè)空數(shù)組   【盡量不在終極方法中傳參數(shù)】

        * find():查詢(xún)單條記錄   select()查詢(xún)多條記錄     table('數(shù)據(jù)表') 設(shè)置查詢(xún)的數(shù)據(jù)表    field('字段1,字段2,...')或者數(shù)組格式傳入field(['字段1','字段2'...]) 返回指定的字段  新版本數(shù)組格式不再支持中文別名       where()查詢(xún)條件  具體操作如下

    public function find()
    {
        //查詢(xún)單條記錄
        $res = Db::table('staff')
//            ->field('name,sex,salary')
//            ->field(['name','sex','salary'])   //新版本數(shù)組格式不再支持中文別名
            ->field('name as 姓名,sex as 性別,salary as 工資')   //字符串可以別名中文
            ->where('staff_id','>',10)  //'='可以省略    主鍵大于10的第一條
            ->find();
        dump($res);
    }
    
        public function select()
    {
        //查詢(xún)滿(mǎn)足條件的多條記錄
        $res = Db::table('staff')
            ->field('name as 姓名,sex as 性別,salary as 工資')
//            ->where('salary > 3000')
            ->where('salary', '>' ,'3000')
//            ->order('salary DESC')      //DESC降序   默認(rèn)ASC 升序
            ->order('salary','ASC')      //DESC降序   默認(rèn)ASC 升序
            ->limit(5)        //只輸出5條
            ->select();
        dump($res);
    }

    2.新增方法  寫(xiě)操作返回受影響的記錄條數(shù)   insert()   新增一條數(shù)據(jù)   insertAll() 新增多條記錄        data() 將數(shù)據(jù)打包  方法如下   Db::getLastInsID()  返回新增的最后一個(gè)主鍵     insertGetId()  新增并返回主鍵   操作如下

  public function insert()
    {

        //新增單條記錄 insert()
        $data = [
            'name' => '美國(guó)隊(duì)長(zhǎng)',
            'sex'  => 0,
            'age'  => 98,
            'salary' => 6000
        ];
        $data1 = [
            'name' => '蟻人',
            'sex'  => 0,
            'age'  => 98,
            'salary' => 6000
        ];
//        $num = Db::table('staff')
//            ->insert($data);
//        $id = Db::getLastInsID();   //返回最后新增的主鍵id
//        return $num ? '添加成功id='.$id : '沒(méi)有記錄被添加添加失敗';

        //data($data)  :將要處理的數(shù)據(jù)打包  option[]
        //insertGetId()  == insert()+getLastInsID()
//
//        $id = Db::table('staff')->insertGetId($data1);
//        return $id ? '添加成功id='.$id : '沒(méi)有記錄被添加添加失敗';

//        $num = Db::table('staff')
//            ->data($data)    //打包數(shù)據(jù)
//            ->insert();
//        $id = Db::getLastInsID();   //返回最后新增的主鍵id
//        return $num ? '添加成功id='.$id : '沒(méi)有記錄被添加添加失敗';

        //新增多條記錄:insertAll()
        $data = [
            ['name'=>'鋼鐵俠','sex'=>0,'salary'=>7000],
            ['name'=>'班納','sex'=>0,'salary'=>500],
            ['name'=>'鷹眼','sex'=>0,'salary'=>5000],
        ];
        $num = Db::table('staff')
            ->data($data)        //打包數(shù)據(jù)
            ->insertAll();
        return $num ? '添加成功'.$num.'條記錄' : '沒(méi)有記錄被添加添加失敗';

    }

    3.更新操作  update()  更新操作必須是基于前置查詢(xún),不允許無(wú)條件更新  如果更新條件有主鍵 可以直接傳入data()中  Db::raw()可以實(shí)現(xiàn)自增操作等 操作如下  

    public function update()
    {

        //將工資小于等于5000的員工,加薪1000
//        $num = Db::table('staff')
//            ->where('salary','<=',4000)
//            ->data(['salary'=>Db::raw('salary+1000')])        
//            ->update();

        $num = Db::table('staff')
            ->update(['sex'=>1,'staff_id'=>45]);    
        return $num ? '更新成功'.$num.'條記錄' : '沒(méi)有記錄被添加添加失敗';

    }

    4.刪除操作 delete()  刪除也是必須基于前置查詢(xún),不允許無(wú)條件刪除 

        * 刪除數(shù)據(jù)是一個(gè)及其危險(xiǎn)的操作,建議使用框架軟刪除來(lái)實(shí)現(xiàn),用更新來(lái)模擬刪除

        * 在實(shí)際的開(kāi)發(fā)過(guò)程中,盡可能不要在控制器直接操作數(shù)據(jù)庫(kù),而是采用模型來(lái)實(shí)現(xiàn)

    public function delete()
    {

//        $num = Db::table('staff')->delete(18);    //刪除
//        $num = Db::table('staff')->delete([12,13,17]);
        $num = Db::table('staff')
//            ->where('staff_id','15')
            ->where('salary','>',10000)
            ->delete();
        $num = Db::table('staff')->delete(true);    //清空表
        return $num ? '刪除成功'.$num.'條記錄' : '沒(méi)有記錄被添加添加失敗';

    }







Correcting teacher:韋小寶Correction time:2018-12-14 16:03:56
Teacher's summary:看到你的作業(yè)就是知道肯定很不錯(cuò)!一如既往寫(xiě)的很棒!繼續(xù)加油吧!

Release Notes

Popular Entries