<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國際加速解決方案。 廣告
                [TOC] # ThinkPHP 操作大全總結 ## 1.create方法 普通的表單提交會把所有的表單數據提交上來 ~~~ $data = $_POST; print_r($data); ~~~ 結果:Array ( [status] => 1 [comment] => 啊啊啊 [id] => 16 [submit] => 提交 ) * * * * * create方法處理 ~~~ $data = $userApplicantsModel->create(); // 把無用的都顧慮掉了 print_r($data);exit; ~~~ 結果Array ( [status] => 1 [comment] => 啊啊啊 [id] => 16 ) * * * * * ## 2.UNION操作 > UNION操作用于合并兩個或多個 SELECT 語句的結果集。 ~~~ $Model->field('name') ->table('think_user_0') ->union('SELECT name FROM think_user_1') ->union('SELECT name FROM think_user_2') ->select(); ~~~ UNION添加where ~~~ select * from ( select 字段 from 表名1 union select 字段 from 表名2 ) as A where 條件 ~~~ * * * * * ## 3.R方法 調用某個控制器的操作方法 ![](https://box.kancloud.cn/bde740609a57c89faa97a06f6d2b422f_369x970.png) 在loginController.class.php調用 Lib下的第三方類 ![](https://box.kancloud.cn/5bd65e58766973e2d66369dfcc5baf79_682x88.png) ~~~ R('User/User/login', array($phone, $password, '', FALSE), 'Lib'); 第一個User 是模塊名 第二個User是Lib下的UserLib.class.php 的名稱 第三個login 是UserLib.class.php中的login方法名 array 是login方法需要的參數 LIb是 User模塊下的LIb文件名稱 ~~~ > **推薦** 此寫法--用命名空間的寫法(可以引用所有的方法) ~~~ namespace User\Lib\UserLib::login(); ~~~ * * * * * ## 4. like查詢多表多字段 >模糊查詢多個表和多個字段 ~~~ $keywords = I("post.keywords"); $model = M(); $info = $model->table('new_mall_goods a,new_mall_goods_extend b')->where('a.title = %' . $keywords . '% or a.shop_name = %' . $keywords . '% or a.cate_name = %' . $keywords . '% or a.content = %' . $keywords . '% or b.shop_contact = %' . $keywords . '% or b.cate1_name = %' . $keywords . '% or b.cate2_name = %' . $keywords . '% or b.cate3_name = %' . $keywords . '% or b.cate4_name = %' . $keywords . '% or b.cate5_name = %' . $keywords . '% or b.price1 = %' . $keywords . '% or b.price2 = %' . $keywords . '% or b.price3 = %' . $keywords . '% or b.price4 = %' . $keywords . '% or b.description = %' . $keywords . '%')->where("a.good_id = b.good_id")->select(); ~~~ * * * * * ## 5.將數組內元素內容相同的合并成一個 ~~~ $arr1 = array( array('id' = 1 , 'name' = '哈哈'); array('id' = 2 , 'name' = '哈哈'); array('id' = 3 , 'name' = '呵呵'); ); 變為 $arr2 = array( array('id' = 1 , 'name' = '哈哈'); array('id' = 2 , 'name' = '呵呵'); ); ~~~ **代碼實例** ~~~ $arr1 = array( array('id' = 1 , 'name' = '哈哈'); array('id' = 2 , 'name' = '哈哈'); array('id' = 3 , 'name' = '呵呵'); ); $output_arr = array(); $help_arr = array(); foreach ($arr1 as $item) { if ( !in_array($item['name'],$help_arr)) { $output_arr[] = $item; $help_arr[] = $item['name']; } } print_r($output_arr); //$output_arr 就是想要的結果 ~~~ * * * * * ## 6.將二維數組中相同的元素過濾并且不改變鍵值 ~~~ function array_unique_fb($array){ foreach($array as $k => $v){ $keyvalue = array_keys($v); $key = array_keys ($v); $v = implode ('$', $v); //降維,也可以用implode,將一維數組轉換為用逗號連接的字符串 $temp[] = $v; } $temp = array_unique($temp); //去掉重復的字符串,也就是重復的一維數組 foreach($temp as $k => $v){ $temp[$k] = explode('$', $v); //再將拆開的數組重新組裝 } foreach ($temp as $key => $value) { $newArray[] = array_combine($keyvalue,$value); } return $newArray; } ~~~ ## 7.thinkphp 自動驗證 **靜態定義** > 在模型中定義驗證規則,稱為靜態定義。 > 我們在模型類里面定義了$_validate屬性如下: ~~~ namespace Home\Model; use Think\Model; class UserModel extends Model{ protected $_validate = array( array('verify','require','驗證碼必須!'), //默認情況下用正則進行驗證 array('name','','帳號名稱已經存在!',0,'unique',1), // 在新增的時候驗證name字段是否唯一 array('value',array(1,2,3),'值的范圍不正確!',2,'in'), // 當值不為空的時候判斷是否在一個范圍內 array('repassword','password','確認密碼不正確',0,'confirm'), // 驗證確認密碼是否和密碼一致 array('password','checkPwd','密碼格式不正確',0,'function'), // 自定義函數驗證密碼格式 ); } ~~~ > 定義好驗證規則后,就可以在使用create方法創建數據對象的時候自動調用: ~~~ $User = D("User"); // 實例化User對象 if (!$User->create()){ // 如果創建失敗 表示驗證沒有通過 輸出錯誤提示信息 exit($User->getError()); }else{ // 驗證通過 可以進行其他數據操作 } ~~~ **動態驗證** **注:動態驗證不依賴模型類的定義,所以通常用M函數實例化模型就可以** > 如果采用動態驗證的方式,就比較靈活,可以根據不同的需要,在操作同一個模型的時候使用不同的驗證規則,例如上面的靜態驗證方式可以改為: ~~~ $rules = array( array('verify','require','驗證碼必須!'), //默認情況下用正則進行驗證 array('name','','帳號名稱已經存在!',0,'unique',1), // 在新增的時候驗證name字段是否唯一 array('value',array(1,2,3),'值的范圍不正確!',2,'in'), // 當值不為空的時候判斷是否在一個范圍內 array('repassword','password','確認密碼不正確',0,'confirm'), // 驗證確認密碼是否和密碼一致 array('password','checkPwd','密碼格式不正確',0,'function'), // 自定義函數驗證密碼格式 ); $User = M("User"); // 實例化User對象 if (!$User->validate($rules)->create()){ // 如果創建失敗 表示驗證沒有通過 輸出錯誤提示信息 exit($User->getError()); }else{ // 驗證通過 可以進行其他數據操作 } ~~~ ## 8.打印log日志 測試程序時,很有用 ~~~ 'LOG_RECORD' => true, // 開啟日志記錄 'LOG_LEVEL' =>'EMERG,ALERT,CRIT,ERR', // 只記錄EMERG ALERT CRIT ERR 錯誤 ~~~ ~~~ class Log { // 日志級別 從上到下,由低到高 const EMERG = 'EMERG'; // 嚴重錯誤: 導致系統崩潰無法使用 const ALERT = 'ALERT'; // 警戒性錯誤: 必須被立即修改的錯誤 const CRIT = 'CRIT'; // 臨界值錯誤: 超過臨界值的錯誤,例如一天24小時,而輸入的是25小時這樣 const ERR = 'ERR'; // 一般錯誤: 一般性錯誤 const WARN = 'WARN'; // 警告性錯誤: 需要發出警告的錯誤 const NOTICE = 'NOTIC'; // 通知: 程序可以運行但是還不夠完美的錯誤 const INFO = 'INFO'; // 信息: 程序輸出信息 const DEBUG = 'DEBUG'; // 調試: 調試信息 const SQL = 'SQL'; // SQL:SQL語句 注意只在調試模式開啟時有效 // 日志記錄方式 const SYSTEM = 0; const MAIL = 1; const FILE = 3; const SAPI = 4; // 日志信息 static $log = array(); // 日期格式 static $format = '[ c ]'; ~~~ ## 9.realpath — 返回規范化的絕對路徑名 > realpath() 擴展所有的符號連接并且處理輸入的 path 中的 '/./', '/../' 以及多余的 '/' 并返回規范化后的絕對路徑名。返回的路徑中沒有符號連接,'/./' 或 '/../' 成分。 發現只能在config配置中可以使用 不能再控制器中使用 > realpath() 失敗時返回 FALSE,比如說文件不存在的話。 **用這個可以保證文件路徑在服務器端可以正常訪問**
                  <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>

                              哎呀哎呀视频在线观看