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

首頁 > 開發 > PHP > 正文

ThinkPHP表單數據智能寫入create方法實例分析

2024-05-04 23:39:18
字體:
來源:轉載
供稿:網友

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

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

創建數據對象 create()

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

將前文寫入表單數據的例子用 create() 來實現:

 

 
  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 "插入數據 id 為:$lastInsId"
  9. else { 
  10. echo "數據寫入錯誤!"
  11. }else
  12. exit($Dao->getError().' [ <a href="javascript:history.back()">返 回</a> ]'); 

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

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

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

① 令牌驗證

② 數據自動驗證

③ 字段映射支持

④ 字段類型檢查

⑤ 數據自動完成

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

自動驗證與自動填充

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

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

 

 
  1. class UserModel extends Model{ 
  2. // 自動驗證設置 
  3. protected $_validate = array( 
  4. array('username','require','用戶名必須填寫!',1), 
  5. array('email','email','郵箱格式錯誤!',2), 
  6. array('username','','用戶名已經存在!',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 "插入數據 id 為:$lastInsId"
  7. else { 
  8. echo "數據寫入錯誤!"
  9. }else
  10. exit($Dao->getError().' [ <a href="javascript:history.back()">返 回</a> ]'); 

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

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

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

提示:

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 珠海市| 乐清市| 吴桥县| 门源| 金湖县| 涟源市| 会同县| 宁海县| 城固县| 临泉县| 菏泽市| 波密县| 克拉玛依市| 伊宁市| 富阳市| 彭州市| 鞍山市| 深泽县| 准格尔旗| 达拉特旗| 五家渠市| 舟山市| 沾益县| 繁昌县| 泸水县| 大余县| 深圳市| 玛沁县| 乐清市| 淅川县| 渭源县| 宁明县| 娄底市| 乌兰浩特市| 临泉县| 桦甸市| 奉化市| 汉中市| 泉州市| 军事| 揭东县|