麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > PHP > 正文

ThinkPHP表單數(shù)據(jù)智能寫入create方法實例分析

2024-05-04 23:39:18
字體:
來源:轉載
供稿:網(wǎng)友

這篇文章主要介紹了ThinkPHP表單數(shù)據(jù)智能寫入create方法,以實例形式較為詳細的分析了ThinkPHP中create只能寫入的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了ThinkPHP表單數(shù)據(jù)智能寫入create方法。分享給大家供大家參考。具體如下:

創(chuàng)建數(shù)據(jù)對象 create()

除了手動構造入庫的數(shù)據(jù)集之外,ThinkPHP 還提供了自動創(chuàng)建數(shù)據(jù)對象的 create() 方法。create() 方法將自動收集提交的表單數(shù)據(jù)并創(chuàng)建數(shù)據(jù)對象而無需人工干預,這在表單數(shù)據(jù)字段非常多的情況下更具優(yōu)勢。

將前文寫入表單數(shù)據(jù)的例子用 create() 來實現(xiàn):

 

 
  1. public function insert2(){ 
  2. header("Content-Type:text/html; charset=utf-8"); 
  3. $Dao = M("User"); 
  4. if($Dao->create()){ 
  5. $Dao->password = md5($_POST["password"]); 
  6. $Dao->regdate = time(); 
  7. if($lastInsId = $Dao->add()){ 
  8. echo "插入數(shù)據(jù) id 為:$lastInsId"
  9. else { 
  10. echo "數(shù)據(jù)寫入錯誤!"
  11. }else
  12. exit($Dao->getError().' [ <a href="javascript:history.back()">返 回</a> ]'); 

create() 創(chuàng)建數(shù)據(jù)對象后,將自動收集提交過來的表單數(shù)據(jù)。而表單數(shù)據(jù)可能需要經(jīng)過一定加工(例如將密碼加密)才能寫入數(shù)據(jù)表,所以可以對數(shù)據(jù)對象的成員屬性值根據(jù)進行修改或添加去除等。

提示:create() 創(chuàng)建的數(shù)據(jù)對象存放于內存,在執(zhí)行入庫動作(add() 或 save())之前,都可以進行修改。

在上面的例子里,create()方法 的行為和 date()方法 是一致。但 date() 方法只是簡單的創(chuàng)建數(shù)據(jù)對象,但 create() 方法還具備:

① 令牌驗證

② 數(shù)據(jù)自動驗證

③ 字段映射支持

④ 字段類型檢查

⑤ 數(shù)據(jù)自動完成

等各種高級的數(shù)據(jù)功能,要完成這些高級數(shù)據(jù)模型功能,需要使用 D方法 實例化數(shù)據(jù)模型。ThinkPHP 提供了各種驗證與填充規(guī)則供調用,具體可參見《ThinkPHP 自動驗證》與《ThinkPHP 自動填充》相關文章。

自動驗證與自動填充

在將表單寫入數(shù)據(jù)表之前,常常會有一些對數(shù)據(jù)的檢測(提交的用戶名是否符合要求)與處理(如例子中的密碼加密以及取得當前時間戳)。create() 方法就支持數(shù)據(jù)的自動驗證與自動完成。

在 LibModel 目錄下創(chuàng)建 UserModel.class.php 文件(User 為創(chuàng)建的模型對象,也對應 前綴_user 表),加入自動驗證和自動填充規(guī)則:

 

 
  1. class UserModel extends Model{ 
  2. // 自動驗證設置 
  3. protected $_validate = array( 
  4. array('username','require','用戶名必須填寫!',1), 
  5. array('email','email','郵箱格式錯誤!',2), 
  6. array('username','','用戶名已經(jīng)存在!',0,'unique',1), 
  7. ); 
  8. //自動填充設置 
  9. protected $_auto = array( 
  10. array('regdate','time',self::MODEL_INSERT,'function'), 
  11. array('password','md5',self::MODEL_INSERT,'function'), 
  12. ); 

將 insert2 操作更改為:

 

 
  1. public function insert2(){ 
  2. header("Content-Type:text/html; charset=utf-8"); 
  3. $Dao = D("User"); 
  4. if($Dao->create()){ 
  5. if($lastInsId = $Dao->add()){ 
  6. echo "插入數(shù)據(jù) id 為:$lastInsId"
  7. else { 
  8. echo "數(shù)據(jù)寫入錯誤!"
  9. }else
  10. exit($Dao->getError().' [ <a href="javascript:history.back()">返 回</a> ]'); 

如果提交的數(shù)據(jù)不符合驗證要求(如用戶名存在),則 create() 創(chuàng)建數(shù)據(jù)對象失敗(返回 FALSE ),$Dao->getError() 會打印出自動驗證設置規(guī)則里面設置的提示信息:用戶名已經(jīng)存在!

如果驗證規(guī)則通過后,系統(tǒng)會進行自動填充設置,將表單密碼進行 MD5 加密以及取得當前的時間戳填充入 create() 的數(shù)據(jù)對象。

所以 D方法 配合 create() 是非常智能而強大的,恰當運用可以達到事半功倍快速開發(fā)的目的。

提示:

① D 方法配合 create() 由于其功能強大,也就損失了一定的效率,在業(yè)務邏輯不復雜的情況下推薦 M方法+data() 模式

② create() 默認接受 POST 數(shù)據(jù),若要接受其他類型數(shù)據(jù),只需在參數(shù)內指定即可,如接受 GET 數(shù)據(jù):create($_GET)

希望本文所述對大家基于ThinkPHP框架的php程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产乱淫a∨片免费观看 | 成人免费毛片一 | 欧美一级高潮片免费的 | 性大片免费看 | 久久精品一区二区三区四区五区 | 欧美 亚洲 视频 | 国产成人精品一区二区仙踪林 | 激情宗合 | 爱看久久 | 欧美性受ⅹ╳╳╳黑人a性爽 | 天天干导航 | av在线免费播放 | 精品国产一区二区三区在线观看 | 国产免费观看视频 | 久久久久中精品中文字幕19 | 国产精品视频免费网站 | 一本一道久久久a久久久精品91 | 毛片视频网站在线观看 | 青草伊人网 | 中文字幕精品一区久久久久 | 羞羞视频入口 | 国产一级性生活视频 | 免费网站看v片在线a | 欧美一级小视频 | 在线影院av | 欧美成人鲁丝片在线观看 | 久在线播放 | 色天使中文字幕 | 精品亚洲一区二区三区 | av免播放 | 欧美三级美国一级 | 国产在线午夜 | 精品一区二区久久久久久按摩 | 91精品国产综合久久久动漫日韩 | 免费一级高清毛片 | 国产精选电影免费在线观看 | 国产91九色 | 日韩欧美中文字幕视频 | 91av日韩 | 欧美精品久久久久久久久久 | 欧美日韩免费一区二区三区 |