第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Yii框架不得不說(shuō)的故事—基礎(chǔ)篇(1)

withy PHP開(kāi)發(fā)工程師
難度中級(jí)
時(shí)長(zhǎng) 2小時(shí)39分
學(xué)習(xí)人數(shù)
綜合評(píng)分9.67
176人評(píng)價(jià) 查看評(píng)價(jià)
9.9 內(nèi)容實(shí)用
9.7 簡(jiǎn)潔易懂
9.4 邏輯清晰
  • HelloController.php //數(shù)據(jù)模型之單表添加數(shù)據(jù) //增加數(shù)據(jù) $test = new Test;//實(shí)例化Test模型并保存在$test變量中 //id和title字段可以預(yù)先在保存之前通過(guò)屬性的方式賦值 $test->id = 3; $test->title = 'title3'; //在保存數(shù)據(jù)的時(shí)候,這些數(shù)據(jù)是用戶發(fā)送的請(qǐng)求當(dāng)中獲取的,保存前需要進(jìn)行數(shù)據(jù)的合法性驗(yàn)證,Test模型里有專門的函數(shù)驗(yàn)證。 $test->validate();//保存數(shù)據(jù)之前調(diào)用validate()方法啟用驗(yàn)證器rules()去判斷id和title符不符合保存的條件 if ($test->hasErrors()) { echo 'data is error!';//如果發(fā)生校驗(yàn)錯(cuò)誤,說(shuō)明數(shù)據(jù)不合法。 die;//結(jié)束掉程序,不讓它保存 } $test->save();//調(diào)用save()方法把它轉(zhuǎn)化為一條數(shù)據(jù)并保存在表單中 basic/models/Test.php //數(shù)據(jù)模型之單表添加數(shù)據(jù) //通過(guò)rules()函數(shù)驗(yàn)證保存前數(shù)據(jù)的合法性 public function rules(){ //返回一個(gè)數(shù)組,在數(shù)組里對(duì)每一個(gè)字段進(jìn)行驗(yàn)證 return[ ['id','integer'],//Yii提供了一個(gè)驗(yàn)證器(每個(gè)驗(yàn)證器都是一個(gè)類)的東西,比如integer驗(yàn)證器。 ['title','string','length'=>[0,5]] ]; }
    查看全部
  • //數(shù)據(jù)模型之單表刪除 //刪除數(shù)據(jù),先取出要?jiǎng)h除的數(shù)據(jù) /*$results = Test::find()->where(['id'=>1])->all(); $results[0]->delete();//調(diào)用delete()方法就可以刪除第一條數(shù)據(jù)*/ //刪除數(shù)據(jù)有個(gè)更快捷的方式:調(diào)用控制器當(dāng)中的deleteAll()方法把整個(gè)表里的數(shù)據(jù)刪掉;同時(shí)這個(gè)方法里也可以帶上查詢條件指定刪除哪部分的數(shù)據(jù)。 //Test::deleteAll('id>0'); Test::deleteAll('id>:id',array(':id'=>0));//deleteAll也支持占位符的功能
    查看全部
  • //這樣寫代碼不是太簡(jiǎn)潔,所以Yii框架對(duì)findBySql()直接運(yùn)行sql的方式進(jìn)行了一些改裝(把where查詢條件改裝成一個(gè)數(shù)組) //id=1的數(shù)據(jù)查詢,要想使用數(shù)組查詢需通過(guò)Test活動(dòng)記錄里的find()方法,這個(gè)方法會(huì)返回一個(gè)對(duì)象,再通過(guò)where()方法加上查詢條件 //$results = Test::find()->where(['id'=>1])->all(); //id>0 //$results = Test::find()->where(['>','id',0])->all(); //id>=1 and id<=2 /*$results = Test::find()->where(['between','id',1,2])->all(); print_r(count($results));*/ //title like "%title1%” //$results = Test::find()->where(['like','title','title1'])->all();//顯示1條數(shù)據(jù),包含title1的 /*$results = Test::find()->where(['like','title','title'])->all();//顯示包含title的所有數(shù)據(jù) print_r(count($results));*/ //查詢很多數(shù)據(jù)時(shí),這些數(shù)據(jù)一下子從數(shù)據(jù)庫(kù)拿到內(nèi)存當(dāng)中,內(nèi)存可能會(huì)扛不住。Yii框架針對(duì)這種情況也做了一些優(yōu)化(兩種形式)。 //第一種:查詢結(jié)果轉(zhuǎn)化為數(shù)組(對(duì)象占用內(nèi)存高于數(shù)組),Yii提供了asArray()方法。 $results = Test::find()->where(['between','id',1,2])->asArray()->all(); //第二種:批量查詢(每次規(guī)定拿n條數(shù)據(jù)放進(jìn)內(nèi)存中,處理完之后再去拿n條數(shù)據(jù),內(nèi)存始終保持著n條數(shù)據(jù)的占有量);batch()每次拿多少條記錄,拿完放到一個(gè)變量當(dāng)中。 /*foreach (Test::find()->batch(1) as $tests) { print_r(count($tests)); }*/ print_r($results);
    查看全部
  • //防sql注入,findBySql提供了一種占位符(:name[冒號(hào)+名字])的方式, $sql = 'select * from test where id=:id';//占位符:id加在Sql語(yǔ)句后面 //$results = Test::findBySql($sql,array(':id'=>1))->all();//通過(guò)findBySql的第2個(gè)參數(shù)array(把占位符換成用戶請(qǐng)求發(fā)送過(guò)來(lái)的真實(shí)的值)把用戶數(shù)據(jù)塞進(jìn)sql里,占位符的方式會(huì)把用戶傳遞過(guò)來(lái)的值(1 / 1 or 1=1)作為一個(gè)整體去處理,能運(yùn)行就運(yùn)行,不能運(yùn)行就報(bào)錯(cuò)。 $results = Test::findBySql($sql,array(':id'=>'1 or 1=1'))->all(); print_r($results);
    查看全部
  • //sql注入:有時(shí)候sql語(yǔ)句不是直接寫出來(lái)的,需要用戶傳遞過(guò)來(lái)的數(shù)據(jù)進(jìn)行配合,比如說(shuō)從瀏覽器提交過(guò)來(lái)的id=1。 $id = '1 or 1=1';//假如用戶提交過(guò)來(lái)的數(shù)據(jù)包含了一些特別的字符 $sql = 'select * from test where id='.$id;//那么$id和select語(yǔ)句拼接的結(jié)果為:select * from test where id=1 or 1=1;where條件始終為真的,那么查詢的結(jié)果就是select * from test,也就是把test表里的數(shù)據(jù)都查詢出來(lái)。 $results = Test::findBySql($sql)->all(); print_r($results);
    查看全部
  • HelloController.php use app\models\Test $sql = 'select * from test where id=1';//以前是直接運(yùn)行sql語(yǔ)句來(lái)查詢數(shù)據(jù) //在活動(dòng)記錄里也對(duì)這種方式提供了良好的支持,提供了一個(gè)靜態(tài)方法findBySql(),繼承于父類,可以直接運(yùn)行sql語(yǔ)句,也對(duì)sql注入有很好的防范支持。 $results = Test::findBySql($sql)->all();//運(yùn)行sql語(yǔ)句,之后會(huì)返回一個(gè)對(duì)象,再調(diào)用對(duì)象里的all()方法,就可以把查詢到的結(jié)果返回出來(lái)。all()方法返回?cái)?shù)據(jù)時(shí),會(huì)把每條記錄都包裝成一個(gè)對(duì)象,再把這些對(duì)象放進(jìn)一個(gè)數(shù)組里,最后把數(shù)組給返回出去。 print_r($results);
    查看全部
  • 數(shù)據(jù)模型: 1,和表名一致的文件; 2,引入命名空間:namespace app\models; 3, 使用命名空間:use yii\db\ActiveRecord; 4, 創(chuàng)建與表名一致的類并繼承ActiveRecord; class tablename extends ActiveRecord{}
    查看全部
  • 在視圖中顯示的數(shù)據(jù)一般會(huì)預(yù)先存儲(chǔ)在數(shù)據(jù)庫(kù)當(dāng)中,Yii框架中為了方便到數(shù)據(jù)庫(kù)中取(增刪改查)這些數(shù)據(jù),提供了一種數(shù)據(jù)模型的東西。Yii要想操控test這張表,必須知道test這張表在哪個(gè)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的地址在哪里,Yii框架專門提供了一個(gè)配置文件(basic/config/db.php)給我們。 advanced版的在common/main-local.php
    查看全部
  • 1.加個(gè)with()將會(huì)關(guān)聯(lián)自動(dòng)查詢: $customers=Customer::find()->with('orders')->all(); 以上語(yǔ)句執(zhí)行的SQL: (1)select * from Customer; (2)select * from order where customer_id in(...); 2.循環(huán)執(zhí)行一次: foreach($customers as $customer){ $orders=$customer->orders; }
    查看全部
  • (1)ClassName()方法是ActiveRecord中的一個(gè)靜態(tài)方法 (2)代碼的封裝:在ActiveRecord中專門寫一個(gè)函數(shù)
    查看全部
  • 快捷方法one()獲取數(shù)組中的一個(gè)數(shù)據(jù)
    查看全部
  • HelloController.php //視圖之?dāng)?shù)據(jù)塊 //return $this->render('home'); return $this->render('about'); common.php <!-- 視圖之?dāng)?shù)據(jù)塊:要想顯示數(shù)據(jù)塊的內(nèi)容,可以通過(guò)$this也就是視圖組件里的blocks數(shù)組去找剛剛定義的block1數(shù)據(jù)塊。 --> <!-- <h1>hello Common</h1> <?//=$this->blocks['block1'];?> <?//=$content;?> --> <!-- 假如在about視圖沒(méi)有定義block1數(shù)據(jù)塊,無(wú)法覆蓋布局文件中的h1標(biāo)簽里的內(nèi)容,那么希望還是使用布局文件common.php里的h1標(biāo)簽的內(nèi)容 --> <?php if(isset($this->blocks['block1'])):?> <?=$this->blocks['block1'];?> <?php else:?> <h1>hello Common</h1> <?php endif;?> <?=$content;?> home.php <!-- 視圖之?dāng)?shù)據(jù)塊,在視圖文件里定義一些數(shù)據(jù),覆蓋掉布局文件里h1的內(nèi)容。有點(diǎn)像面向?qū)ο罄锏母采w方法,子類定義了新方法可以覆蓋父類原來(lái)的方法 --> <!-- 要完成這種功能,Yii框架提供了一種數(shù)據(jù)塊的方式,先定義數(shù)據(jù)塊(視圖組件) --> <?php $this->beginBlock('block1');?> <!-- 給數(shù)據(jù)塊取名為block1 --> <h1>change by home</h1> <?php $this->endBlock();?> <!-- endBlock不需要傳遞參數(shù) --> about.php <!-- 視圖之?dāng)?shù)據(jù)塊 --> <!-- <?//php $this->beginBlock('block1');?> <h1>change by about</h1> <?//php $this->endBlock();?> -->
    查看全部
  • 修改流程圖
    查看全部
  • 添加數(shù)據(jù): helloController.php文件: $test = new Test;//實(shí)例化數(shù)據(jù)模型Test $test->id = 3; $test->title = 'title3'; $test->validate();//驗(yàn)證器,驗(yàn)證字段是否合法 if($test->hasErrors()){ echo 'data is error';//字段不合法 die; } $test->save(); //添加數(shù)據(jù)以及數(shù)據(jù)驗(yàn)證 // $test=new Test; // $test->id=6; // $test->title="Title531231231"; // //數(shù)據(jù)驗(yàn)證,驗(yàn)證器,驗(yàn)證字段是否合法 // $test->validate(); // if($test->hasErrors()){ // echo 'data is error'; // die; // } // $test->save(); //修改單表數(shù)據(jù) $test=Test::find()->where(['id'=>4])->one(); $test->title='title4444'; $test->save();
    查看全部
  • 增加流程圖:
    查看全部

舉報(bào)

0/150
提交
取消
課程須知
學(xué)習(xí)本門課程之前,建議先了解一下知識(shí),會(huì)更有助于理解和掌握本門課程 1、掌握PHP基本的語(yǔ)言語(yǔ)法 2、對(duì)MVC開(kāi)發(fā)方式有一定的了解
老師告訴你能學(xué)到什么?
1、php的新特征 2、一款前沿的框架的使用方式 3、新穎獨(dú)到的程序設(shè)計(jì)

微信掃碼,參與3人拼團(tuán)

微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

友情提示:

您好,此課程屬于遷移課程,您已購(gòu)買該課程,無(wú)需重復(fù)購(gòu)買,感謝您對(duì)慕課網(wǎng)的支持!