亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

數(shù)據(jù)庫(kù)操作原生與構(gòu)造器

original 2018-11-16 01:31:56 247
abstrait:原生查詢,盡量不使用,使用構(gòu)造器。class Demo {     //1. 原生查詢是直接調(diào)用Connection類中的query()和execute()來(lái)實(shí)現(xiàn)。     //2. query()實(shí)現(xiàn)讀操作,主要用于select語(yǔ)句和存儲(chǔ)過(guò)程的查詢。    

原生查詢,盡量不使用,使用構(gòu)造器。

class Demo
{
    //1. 原生查詢是直接調(diào)用Connection類中的query()和execute()來(lái)實(shí)現(xiàn)。
    //2. query()實(shí)現(xiàn)讀操作,主要用于select語(yǔ)句和存儲(chǔ)過(guò)程的查詢。
    //3. execute()實(shí)現(xiàn)寫(xiě)操作,例如新增,更新與刪除等。
    
    public function select()
    {
        echo "select 方法";        

        //用命名占位符: 用關(guān)聯(lián)數(shù)組(順序可以隨意)
        $sql="SELECT namecn,id FROM about WHERE id> :id LIMIT :num";
        //$res=Db::query($sql,['id'=>3,'num'=>3]);
        //[ SQL ] SELECT namecn,id FROM about WHERE id> '3' LIMIT '3' [ RunTime:0.000270s ]
        //參數(shù)默認(rèn)傳入的是字符串,所以還需要轉(zhuǎn)換
        $res=Db::query($sql,['id'=>[3,\PDO::PARAM_INT],'num'=>[3,\PDO::PARAM_INT]]);
        //[ SQL ] SELECT namecn,id FROM about WHERE id> 3 LIMIT 3 [ RunTime:0.000403s ]
        dump($res);
    }

    public function update()
    {
        //更新操作
        $sql="UPDATE about SET introctioncn = :introction WHERE id= :num "; //注意,:后面不能有空格
        Db::execute($sql,['introction'=>'更新字段值','num'=>[19,\PDO::PARAM_INT]]);
        //如果操作失敗,會(huì)自動(dòng)終止運(yùn)行,并輸出異常
        return '更新成功';
    }

}

一、新增單條記錄 INSERT()

public function insert()
{
    //新增單條記錄
    $data=[
      'namecn'=>'榮譽(yù)',
      'introctioncn'=>'榮譽(yù)描述',
      'orderid'=>'2'  //注意是以英文逗號(hào)分開(kāi),不是以分號(hào),經(jīng)常容易犯錯(cuò)。最后一個(gè)不要分號(hào),可以練成一行去寫(xiě),這樣就可以知道后面不需要分號(hào)了
    ];
    $num=Db::table('about')
    ->data($data)
    ->insert();
//行與行之間沒(méi)有分隔符號(hào),理解為$num=Db::table('about')->data($data)->insert();即可
$id=Db::getLastInsID();
return $num ? 'data方式新增單條記錄,一般最常用的就是這個(gè)。添加記錄,id='.$id : 'No記錄';

//inserrGetId()==insert()+getLaseInseID() 直接二合一操作
//$num=Db::table('about')->insertGetId($data);
//return $num ? 'insertGetId方式新增單條記錄,添加記錄,id='.$num : 'No記錄';

//一般不會(huì)在find 和select后面加參數(shù),這方法叫終結(jié)方法,不是鏈?zhǔn)秸{(diào)用
    //一般不會(huì)在find 和select后面加參數(shù),這方法叫終結(jié)方法,不是鏈?zhǔn)秸{(diào)用
}

二、新增多條記錄 INSERTALL()

public function insertall()
{
    $data=[
        ['namecn'=>'技術(shù)','introctioncn'=>'程序員','orderid'=>'1'],
        ['namecn'=>'UI','introctioncn'=>'美女','orderid'=>'2'],
        ['namecn'=>'架構(gòu)師','introctioncn'=>'男的多','orderid'=>'3']
    ];
    $num=Db::table('about')->data($data)->insertAll();
    // INSERT INTO `about` (`namecn` , `introctioncn` , `orderid`) VALUES ( '技術(shù)','程序員',1 ) , ( 'UI','美女',2 ) , ( '架構(gòu)師','男的多',3 ) [ RunTime:0.002119s ]
    return $num ? 'insertAll方式新增多條記錄,添加記錄為'.$num : 'No記錄';
}

三、查詢

備注:->field(['id'=>'主鍵','namecn'=>'名稱','introctioncn'=>'簡(jiǎn)介'])

查詢中使用別名的方法都不成功(find和select都一樣),提示(不支持的數(shù)據(jù)表達(dá)式);使用環(huán)境是iis7.5,php5.6或7

if ($strict && !preg_match('/^[\w\.\*]+$/', $key)) {            throw new Exception('not support data:' . $key);        }


3.1 find()方法

public function find() //find只能支持主鍵,不能放條件
{
    //查詢單條記錄
    //$res=Db::table('about')->find(19);//查詢主健為19的記錄
    //table 獲取完整的表名,find獲取滿足條件的第一一條

    //另外一種寫(xiě)法
    $res=Db::table('about')

        //->field('id,namecn,introctioncn') //查詢指定的列,如果全部查詢,可以省略此條件
        //->where('id','>',19) //where(字段 表達(dá)式 值)

        ->field(['id','namecn','introctioncn']) //放在數(shù)組中,可以直接使用
        //->field(['id'=>'主鍵','namecn'=>'名稱','introctioncn'=>'簡(jiǎn)介']) //別名
        ->where('id','>',19) //where(字段 表達(dá)式 值)
        ->find();//查詢主健為19的記錄
    dump($res);

}

3.2 select()

public function select()
{

    $res=Db::table('about')
        //鏈?zhǔn)秸{(diào)用
        ->field(['id','namecn','introctioncn'])
        //->field(['id'=>'序號(hào)','namecn'=>'標(biāo)題','introctioncn'=>'描述'])  //不支持
        //
    //->where('id'>15) //字符串形式
        ->where('id','>',15) //表達(dá)式
    //->order('orderid asc')
        ->order('orderid', 'asc')//表達(dá)式
        ->limit(3)
    ->select();

    dump($res);
}

四、更新 UPDATE()

public function update()
{
    //更新操作必須是基于前置查詢,不允許無(wú)條件更新,否則不能執(zhí)行
    //update()也是一個(gè)終極方法
    //將排序小于等于2的記錄,增加3
    /*$num= Db::table('about')
        ->where('orderid','<=',2)
        ->data(['orderid'=>Db::raw('orderid+3')])//raw獲取原始數(shù)據(jù),不轉(zhuǎn)譯(否則orderid是字符串,表達(dá)式會(huì)出錯(cuò),不能相加);data是數(shù)組,所以用[]
        ->update();*/
//更新多條記錄
    $num=Db::table('about')
        ->update(['orderid'=>20,'id'=>25]);//根據(jù)條件更新單條記錄
    return $num ? '更新成功,更新'.$num.'記錄' : 'No記錄';
}

注意:raw獲取原始數(shù)據(jù),不轉(zhuǎn)譯

五、刪除 DELETE()

public function delete()
{
    //刪除必須基于前置查詢,不允許無(wú)條件刪除
    //delete() 終極方法
    $num=Db::table('about')->delete(24);
    return $num ? '單條記錄刪除,刪除'.$num.'記錄' : 'No記錄';

    /*$num=Db::table('about')->delete([25,26,27]); //多條記錄以數(shù)組的方式記錄
    return $num ? '多條記錄刪除,刪除'.$num.'記錄' : 'No記錄';*/

    //$num=Db::table('about')->where('id',28)->delete();
   /* $num=Db::table('about')
        ->where('id','>',29) //鏈?zhǔn)椒椒ǎ奖汩喿x及寫(xiě)注釋
        ->delete();
    return $num ? '多條記錄刪除,刪除'.$num.'記錄' : 'No記錄';*/

    /*$num=Db::table('about')
        ->where(ture) //這樣也可以刪除,一般不這么寫(xiě)
        ->delete();*/

   /* $num=Db::table('about')->delete(ture);//清空about表的所有數(shù)據(jù),建議使用軟刪來(lái)實(shí)現(xiàn),用更新來(lái)模式刪除
    return $num ? '多條記錄刪除,刪除'.$num.'記錄' : 'No記錄';*/

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

}


Professeur correcteur:韋小寶Temps de correction:2018-11-16 09:07:24
Résumé du professeur:看到了你的問(wèn)題!這個(gè)問(wèn)題在工單中出現(xiàn)過(guò)!你可以將field中的方括號(hào)去掉!然后將 =>改寫(xiě)成as。工單中相同問(wèn)題參考:http://ipnx.cn/wenda/143034.html

Notes de version

Entrées populaires