<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 創建數據 [上一頁](# "上一頁")[下一頁](# "下一頁") 在進行數據操作之前,我們往往需要手動創建需要的數據,例如對于提交的表單數據:`//?獲取表單的POST數據 $data['name']?=?$_POST['name']; $data['email']?=?$_POST['email']; //?更多的表單數據值獲取 //……`然而ThinkPHP可以幫助你快速地創建數據對象,最典型的應用就是自動根據表單數據創建數據對象,這個優勢在一個數據表的字段非常之多的情況下尤其明顯。 很簡單的例子:`//?實例化User模型 $User?=?M('User'); //?根據表單提交的POST數據創建數據對象 $User->create(); //?把創建的數據對象寫入數據庫 $User->add();`Create方法支持從其它方式創建數據對象,例如,從其它的數據對象,或者數組等 `$data['name']?=?'ThinkPHP'; $data['email']?=?'ThinkPHP@gmail.com'; $User->create($data);`甚至還可以支持從對象創建新的數據對象`//?從User數據對象創建新的Member數據對象 $User?=?M("User"); $User->find(1); $Member?=?M("Member"); $Member->create($User);`而事實上,create方法所做的工作遠非這么簡單,在創建數據對象的同時,完成了一系列的工作,我們來看下create方法的工作流程就能明白: | 步驟 | 說明 | 返回 | |-----|-----|-----| | 1 | 獲取數據源(默認是POST數組) | ? | | 2 | 驗證數據源合法性(非數組或者對象會過濾) | 失敗則返回false | | 3 | 檢查字段映射 | ? | | 4 | 判斷提交狀態(新增或者編輯??根據主鍵自動判斷) | ? | | 5 | 數據自動驗證 | 失敗則返回false | | 6 | 表單令牌驗證 | 失敗則返回false | | 7 | 表單數據賦值(過濾非法字段和字符串處理) | ? | | 8 | 數據自動完成 | ? | | 9 | 生成數據對象(保存在內存) | ? | 因此,我們熟悉的令牌驗證、自動驗證和自動完成(我們會在后面看到相關的用法)功能,其實都必須通過create方法才能生效。Create方法創建的數據對象是保存在內存中,并沒有實際寫入到數據庫中,直到使用add或者save方法才會真正寫入數據庫。 因此在沒有調用add或者save方法之前,我們都可以改變create方法創建的數據對象,例如:`$User?=?M('User'); $User->create();?//創建User數據對象 $User->status?=?1;?//?設置默認的用戶狀態 $User->create_time?=?time();?//?設置用戶的創建時間 $User->add();?//?把用戶對象寫入數據庫`如果只是想簡單創建一個數據對象,并不需要完成一些額外的功能的話,可以使用data方法簡單的創建數據對象。 使用如下:`//?實例化User模型 $User?=?M('User'); //?創建數據后寫入到數據庫 $data['name']?=?'ThinkPHP'; $data['email']?=?'ThinkPHP@gmail.com'; $User->data($data)->add();`Data方法也支持傳入數組和對象,使用data方法創建的數據對象不會進行自動驗證和過濾操作,請自行處理。但在進行add或者save操作的時候,數據表中不存在的字段以及非法的數據類型(例如對象、數組等非標量數據)是會自動過濾的,不用擔心非數據表字段的寫入導致SQL錯誤的問題。**安全提示:** create方法如果沒有傳值,默認取$_POST數據,如果用戶提交的變量內容,含有可執行的html代碼,請進行手工過濾。`$_POST['title']?=?"<script>alert(1);</script>";`非法html代碼可以使用htmlspecialchars進行編碼,以防止用戶提交的html代碼在展示時被執行,以下是兩種安全處理方法。`$_POST['title']?=?htmlspecialchars($_POST['title']); M('User')->create();``$data['title']?=?$this->_post('title',?'htmlspecialchars'); M('User')->create($data);`如果要對全局變量進行修改,請參考本手冊14.4 輸入過濾(VAR_FILTERS參數)和 [TP入門系列之安全設置](http://www.thinkphp.cn/info/184.html) [上一頁](# "上一頁")[下一頁](# "下一頁")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看