国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

ThinkPHP數(shù)據(jù)操作方法總結(jié)

2020-03-22 18:26:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
本文實(shí)例總結(jié)了ThinkPHP數(shù)據(jù)操作方法。分享給大家供大家參考。具體如下:一、ThinkPHP Insert 添加數(shù)據(jù)ThinkPHP 內(nèi)置的 add 方法用于向數(shù)據(jù)表添加數(shù)據(jù),相當(dāng)于 SQL 中的 INSERT INTO 行為。添加數(shù)據(jù) add 方法是 CURD(Create,Update,Read,Delete / 創(chuàng)建,修改,讀取,刪除)中的 Create 的實(shí)現(xiàn),ThinkPHP 支持以普通數(shù)組方式和html' target='_blank'>面向?qū)ο?/u>方式將數(shù)據(jù)寫(xiě)入數(shù)據(jù)表。現(xiàn)在以《PHP MySQL 數(shù)據(jù)庫(kù)教程》中操作 user 表數(shù)據(jù)的例子(具體參見(jiàn):PHP+MySQL之Insert Into數(shù)據(jù)插入用法分析)為例,來(lái)演示如何在 ThinkPHP 中實(shí)現(xiàn)對(duì)數(shù)據(jù)表的數(shù)據(jù)添加操作。例子:在 IndexAction 控制器(Lib/Action/IndexAction.class.php)里,添加 insert() 操作:public function insert()header("Content-Type:text/html; charset=utf-8"); $Dao = M("User"); // 實(shí)例化模型類 // 構(gòu)建寫(xiě)入的數(shù)據(jù)數(shù)組 $data["username"] = "小王"; $data["password"] = md5("123456"); $data["email"] = 12345@163.com;$data["regdate"] = time(); // 寫(xiě)入數(shù)據(jù)if($lastInsId = $Dao- add($data))echo "插入數(shù)據(jù) id 為:$lastInsId";else { $this- error('數(shù)據(jù)寫(xiě)入錯(cuò)誤!');訪問(wèn)執(zhí)行該操作:http://127.0.0.1/html/Myapp/index.php/Index/insert語(yǔ)法解讀M("User") 用于高效實(shí)例化一個(gè)數(shù)據(jù)模型(M 是 new Model 的簡(jiǎn)寫(xiě),稱為快捷方法),參數(shù)為要操作的表名。接下來(lái)構(gòu)建要保存數(shù)據(jù)的數(shù)組 $data 。最后是用 add() 方法將數(shù)據(jù)寫(xiě)入庫(kù)表,由于使用的是 M快捷方法,需要將 $data 數(shù)組傳入 add() 方法。add() 方法如果添加數(shù)據(jù)記錄成功,返回的是新數(shù)據(jù)記錄主鍵,可直接得到。
該例子實(shí)際運(yùn)行的 SQL 為:INSERT INTO user(username,password,email,regdate) VALUES('小王','e10adc3949ba59abbe56e057f20f883e','12345@163.com',1283612673)提示:運(yùn)行該例子,請(qǐng)確認(rèn)在配置文件里正確配置了數(shù)據(jù)庫(kù)的相關(guān)賬號(hào)密碼等信息,具體參見(jiàn)《ThinkPHP公共配置文件與各自項(xiàng)目中配置文件組合的方法》

對(duì)象方式添加數(shù)據(jù)上面的方式是以構(gòu)造數(shù)據(jù)數(shù)組的方式,然后將數(shù)據(jù)以參數(shù)形式傳入 add 方法寫(xiě)入數(shù)據(jù)表。ThinkPHP 也支持以對(duì)象的方式將數(shù)據(jù)寫(xiě)入數(shù)據(jù)表,將上面的代碼更改為:public function insert()header("Content-Type:text/html; charset=utf-8"); $Dao = M("User"); // 實(shí)例化模型類 // 數(shù)據(jù)對(duì)象賦值$Dao- username = "小王"; $Dao- password = md5("123456"); $Dao- email = 12345@163.com; $Dao- regdate = time(); // 寫(xiě)入數(shù)據(jù)if($lastInsId = $Dao- add()){ echo "插入數(shù)據(jù) id 為:$lastInsId"; else {$this- error('數(shù)據(jù)寫(xiě)入錯(cuò)誤!');對(duì)象方式除了數(shù)據(jù)以數(shù)據(jù)對(duì)象方式賦值外,在調(diào)用 add 方法寫(xiě)入數(shù)據(jù)的時(shí)候不需要傳遞參數(shù)。二、ThinkPHP 更新數(shù)據(jù) save方法save()ThinkPHP 中使用 save() 方法來(lái)更新數(shù)據(jù)庫(kù),并且也支持連貫操作的使用。
例子:public function update(){header("Content-Type:text/html; charset=utf-8");$Dao = M("User"); // 需要更新的數(shù)據(jù) $data['email'] = 'Jack@163.com';// 更新的條件 $condition['username'] = 'Jack'; $result = $Dao- where($condition)- save($data);//或者:$resul t= $Dao- where($condition)- data($data)- save();if($result !== false){ echo '數(shù)據(jù)更新成功!';else{echo '數(shù)據(jù)更新失敗!';上面例子執(zhí)行的 SQL 語(yǔ)句為:UPDATE user SET email='Jack@163.com' WHERE username='Jack'提示為了保證數(shù)據(jù)庫(kù)的安全,避免出錯(cuò)更新整個(gè)數(shù)據(jù)表,如果沒(méi)有任何更新條件,數(shù)據(jù)對(duì)象本身也不包含主鍵字段的話,save方法不會(huì)更新任何數(shù)據(jù)庫(kù)的記錄。因此要使用 save() 方法更新數(shù)據(jù),必須指定更新條件或者更新的數(shù)據(jù)中包含主鍵字段。使用主鍵的例子:public function update(){ header("Content-Type:text/html; charset=utf-8"); $Dao = M("User"); // 需要更新的數(shù)據(jù) $data['email'] = 'Jack@163.com'; $data['uid'] = 2; $result = $Dao- save($data);if($result !== false)echo '數(shù)據(jù)更新成功!'; }else{echo '數(shù)據(jù)更新失敗!';如果需要更新的數(shù)據(jù)里面包含主鍵,那么 ThinkPHP 會(huì)自動(dòng)把主鍵的值作為條件來(lái)更新。上面的例子跟下面的效果相同:// 需要更新的數(shù)據(jù) $data['email'] = 'Jack@163.com';
// 更新的條件 $condition['uid'] = 2; $result = $Dao- where($condition)- save($data);
如果是表單數(shù)據(jù),還可以使用 create() 方法創(chuàng)建數(shù)據(jù)對(duì)象來(lái)更新數(shù)據(jù):
public function update(){header("Content-Type:text/html; charset=utf-8"); $Dao = D("User"); if($vo = $Dao- create()){ $result = $Dao- save();if($result !== false){ echo '數(shù)據(jù)更新成功!';}else{echo '數(shù)據(jù)更新失敗!';else{$this- error($Form- getError());如果更新的數(shù)據(jù)需要做邏輯處理,可以在操作類以對(duì)象的方式處理或者在模型內(nèi)處理,具體可參考《ThinkPHP 表單數(shù)據(jù)智能寫(xiě)入 create 方法》。注意:以create() 方法創(chuàng)建數(shù)據(jù)對(duì)象來(lái)更新數(shù)據(jù),表單中必須包含一個(gè)以主鍵為名稱的隱藏域,才能完成保存操作。三、ThinkPHP 查詢數(shù)據(jù) select(findAll)方法ThinkPHP 查詢數(shù)據(jù)主要提供以下幾類查詢:
select:普通查詢,同 findAll() 方法
find:取得符合查詢條件的一條記錄
getBy動(dòng)態(tài)查詢:根據(jù)某個(gè)字段取得符合查詢條件的一條記錄
getField:獲取某個(gè)字段的值或多個(gè)字段的索引數(shù)組
區(qū)間查詢:取得符合查詢條件的區(qū)間記錄
統(tǒng)計(jì)查詢:取得符合查詢條件的統(tǒng)計(jì)數(shù)據(jù)
定位查詢:取得符合查詢條件的一條或多條記錄
原生SQL查詢:支持以原生 SQL 進(jìn)行查詢或執(zhí)行操作select()select() 是 ThinkPHP 中最常用的普通查詢方法,得到的是一個(gè)二維數(shù)組。findAll() 為 select() 方法的別名,并建議使用 select()。讀取操作下面的例子將 user 表的所有數(shù)據(jù)讀取出來(lái)并顯示:public function read()$Dao = M("User"); // 查詢數(shù)據(jù)$list = $Dao- select();//dump($list);// 用 dump() 可以在調(diào)試階段查看數(shù)據(jù)是否已讀取// 模板變量賦值 $this- assign("list", $list);// 輸出模板 $this- display();假設(shè)上面的例子對(duì)應(yīng)的 class 文件為 Lib/Action/IndexAction.class.php ,那么對(duì)應(yīng)的模板文件為 Tpl/default/Index/read.html。數(shù)據(jù)顯示模板模板文件用于顯示剛才讀取的 User 表的數(shù)據(jù)。在學(xué)習(xí)階段,要不想使用模板,也可以直接使用 foreach 語(yǔ)法在 read() 操作內(nèi)直接顯示讀取的數(shù)據(jù)。下面是模板相應(yīng)的代碼片段,我們將讀取的數(shù)據(jù)在一個(gè)表格中顯示出來(lái): table border="1" th width="10%" ID /th th width="30%" 用戶名 /th th width="30%" 電子郵件 /th th 注冊(cè)時(shí)間 /th /tr volist name="list" id="vo" td align="center" {$vo['uid']} /td td {$vo['username']} /td td {$vo['email']} /td td {$vo['regdate']|date='Y-m-d H:i',###} /td /tr /volist /table 要了解更多關(guān)于 ThinkPHP模板的知識(shí),請(qǐng)參閱:《ThinkPHP 模板》。field() 查詢指定字段select() 方法默認(rèn)是查詢所有字段的數(shù)據(jù),如果要查詢某個(gè)或某些字段,就需要使用 filed() 方法。filed() 是屬于 ThinkPHP 連貫操作中的一個(gè)方法,如在上面的例子中,只查詢用戶名和電子郵件地址,則查詢方法對(duì)應(yīng)更改為:$list = $Dao- field('username,email')- select();使用查詢條件使用 ThinkPHP 連貫操作可以很方便的對(duì)數(shù)據(jù)查詢使用查詢條件。下面是一些簡(jiǎn)單的查詢條件的例子。where() 條件…… // 構(gòu)造查詢條件 $condition['username'] = 'Admin'; // 查詢數(shù)據(jù) $list = $Dao- where($condition)- select(); ……
上述查詢的就是 username='Admin' 這個(gè)條件的數(shù)據(jù)。關(guān)于 ThinkPHP where 條件更詳細(xì)資料,請(qǐng)參閱《ThinkPHP Where 條件》。ORDER BY 排序在查詢中使用 ORDER BY 對(duì)數(shù)據(jù)進(jìn)行排序:
…… // 查詢數(shù)據(jù) $list = $Dao- order('uid DESC')- select(); ……
這個(gè)例子就是數(shù)據(jù)按照 ORDER BY uid DESC 進(jìn)行查詢,而 order() 方法中的參數(shù)意義跟 SQL 語(yǔ)句中的意義完全一致。LIMIT 限制在查詢中使用 LIMIT 限定數(shù)據(jù)返回的記錄數(shù):
…… // 查詢數(shù)據(jù) $list = $Dao- limit('4,5')- select(); ……
這個(gè)例子就是將第 5-10 條記錄取出,limit() 方法內(nèi)的參數(shù)意義跟 SQL 語(yǔ)句中的 LIMIT 完全一致。連貫操作ThinkPHP 中允許將數(shù)據(jù)對(duì)象中的各個(gè)方法寫(xiě)在一起操作,如:
$list = $Dao- order('uid DESC')- limit('4,5')- select();
這就是連貫操作,關(guān)于連貫操作更詳細(xì)的介紹,參見(jiàn)《ThinkPHP 連貫操作》。

四、ThinkPHP 刪除數(shù)據(jù)記錄 delete 方法ThinkPHP 中使用 delete() 方法來(lái)刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄,并且也支持連貫操作的使用。delete() 方法執(zhí)行成功返回操作影響(刪除)的記錄數(shù)。例子:public function del(){ header("Content-Type:text/html; charset=utf-8");$Dao = M("User"); // 刪除 uid=5 的數(shù)據(jù)記錄 $result = $Dao- where('uid = 5')- delete(); if($result !== false){echo '刪除 ',$result,' 條數(shù)據(jù)。';}else{ echo '刪除數(shù)據(jù)失敗!';上面例子執(zhí)行的 SQL 為:DELETE FROM user WHERE uid = 5delete() 方法可以用于刪除單個(gè)或者多個(gè)數(shù)據(jù),主要取決于 where() 刪除條件。另外也可以配合連貫操作中的其他方法如 order()、limit() 等構(gòu)造出更符合需要的刪除條件:$Dao = M("User");$result = $Dao- where('status=0')- order('regdate ASC')- limit('5')- delete();上面例子根據(jù)用戶注冊(cè)時(shí)間降序排列,刪除 5 條 status=0 的用戶記錄。希望本文所述對(duì)大家基于ThinkPHP框架的php程序設(shè)計(jì)有所幫助。PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汉阴县| 秀山| 长寿区| 霞浦县| 手游| 库伦旗| 东乡县| 佛冈县| 锡林浩特市| 天台县| 武义县| 乐昌市| 富锦市| 额济纳旗| 云安县| 浏阳市| 宜阳县| 贵南县| 乐至县| 肇源县| 平定县| 卢氏县| 信丰县| 叶城县| 武邑县| 广南县| 洛南县| 右玉县| 台江县| 象山县| 龙川县| 鹿邑县| 宁德市| 定陶县| 蒙阴县| 凤城市| 乐清市| 比如县| 彰武县| 云林县| 郎溪县|