1:輸出變量函數 (手冊目錄:控制器-輸出變量)php
I('變量類型.變量名',['默認值'],['過濾方法'],['額外數據源'])html
例:$title = I('post.title','','strip_tags');sql
2:判斷是不是POST方式提交 (手冊目錄:控制器-請求類型)thinkphp
(手冊目錄:附錄-常亮參考)數組
IS_POST 是系統常亮,判斷當前是否POST請求安全
例如: if (IS_POST){ ………… }
函數
3: 分頁post
$User = M('User'); // 實例化User對象 $count = $User->where('status=1')->count();// 查詢知足要求的總記錄數 $Page = new \Think\Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數(25) $show = $Page->show();// 分頁顯示輸出 // 進行分頁數據查詢 注意limit方法的參數要使用Page類的屬性 $list = $User->where('status=1')->order('create_time')->limit($Page->firstRow.','.$Page->listRows)->select(); $this->assign('list',$list);// 賦值數據集 $this->assign('page',$show);// 賦值分頁輸出 $this->display(); // 輸出模板
4:Thinkphp使用多個_stringthis
下面這一種狀況,出現兩個_string,第一個string會把第二個給覆蓋掉url
$map["a"]=1;
$map["_string"]="條件1 or 條件2";
$map["_string"]="條件3";
解決辦法:
$map["a"]=1;
$map["_string"]=" ( 條件1 or 條件2 ) ";
$map["_string"] . =" and 條件3";
生成的sql語句爲:where a=1 AND ( (條件1 OR 條件2) and 條件3 )
5:大小寫引發的錯誤
1- 讀取配置 C('參數名稱'),‘參數名稱’的定義和調用時,最好都統一大寫。
6:加載公共模塊的service
$service = new \Common\Service\xxxxx();
7:CURD返回值
http://www.baiwar.com/post/thinkphp-database-operations-in-the-return-value.html
http://doc.thinkphp.cn/manual/curd.html
①、save()方法:
返回值是影響的記錄數,若是返回false則表示更新出錯,所以必定要用恆等來判斷是否更新失敗。
$result=$model->save(); if ($result === FALSE) { echo '修改失敗'; } elseif($result === 0) { echo '未做任何修改'; } else { echo '修改爲功'; }
②、Count 、Max、Min 、Avg 、Sum返回值
若是查詢出錯,返回值爲false
查詢成功,則返回對應的值。(如0、一、2)
③、find方法:
若是查詢出錯返回:false,
查詢結果爲空返回:NULL
查詢成功則返回一個關聯數組(鍵值是字段名或者別名)。
④、add()方法:
若是數據非法或者查詢錯誤則返回false
若是是自增主鍵 則返回主鍵值,不然返回1
8:使用GROUP BY的時候如何統計記錄條數 COUNT(*) DISTINCT
M(「bus」)->where($where_ybj)->group('ordert')->count("DISTINCT orderid");
9:日誌
$log = print_r($useramount_admin_info, true);
Log::record($log, 'DEBUG');
10:多表查詢( 鏈接查詢)
方法一:使用table()方法
$tables = "b_bus bus,b_waidiao_businfo wd"; $wdbl_map['bus.license'] = array('like',"%$select_license%"); $wdbl_map["wd.type"] = 1; $wdbl_map["wd.status"] = 1; $wdbl_map["_string"] = "wd.busid = bus.id"; $waidoao_disposable_bus_info_list = M()->table($tables)->where($wdbl_map)->field('bus .*')->group('wd.busid')->order("wd.id desc")->select();
方法二:使用join() 方法
十一、TP5:擴展配置目錄
extra
config('status.ps')
12:如何在一個模塊Action中直接執行另外一個模塊的Action
A方法:用於在內部實例化控制器,調用格式:
A('[項目://][分組/]模塊','控制器層名稱')
A('Home/Common');
13:A方法、R方法、D方法、M方法的區別
A方法只是對象的實例化,而R方法是能夠同時實例化對象裏面的方法的。
Thinkphp 3.2.3 A()和R()方法都是對控制器類的實例化,R()方法比A()寫法更簡便,R()方法能直接返回類中方法返回的信息。R()方法裏面封裝了A()方法。
// A方法 $test_m=A("Home/Goods"); echo $test_m->test(); // R方法 echo R("Home/Goods/test");
咱們在Model的數據模型裏面,必然須要下面的兩種方法,一個是D方法,一個是M方法,前者是實例化數據模型類,然後者則是實例化數據模型的父類。
14:Thinkphp中的 I 函數(Thinkphp3.2.3版本) I方法
I 函數的做用是獲取系統變量,必要時還能夠對變量值進行過濾及強制轉化,I 函數的語法格式:
I('變量類型.變量名/修飾符',['默認值'],['過濾方法或正則'],['額外數據源'])
在PHP中獲取變量值的方法有不少,好比:$_GET['變量名'],$_POST['變量名'],$_SESSION['變量名'],$_COOKIE['變量名'],$_SERVER['變量名'] 均可以獲取相應的變量值,但在thinkphp中爲了安全的緣由建議統一使用 I 函數來獲取變量值。例如:獲取 URL 地址欄中參數 id 的值,在php中咱們用 $_GET['id'] 來獲取,在thinkphp中咱們能夠用 I('get.id') 來獲取。一樣的, $_POST['id'] 就用 I('post.id') 取代。
15:Thinkphp中的U函數(Thinkphp3.2.3版本)
U函數的做用是根據當前的URL設置生成對應的URL地址,使用U函數能夠確保項目在移植過程當中不受環境的影響。
U方法的定義規則以下(方括號內參數根據實際應用決定):
U('地址表達式',['參數'],['僞靜態後綴'],['顯示域名'])
16:getField用法總結
$User = M("User"); // 實例化User對象 // 獲取ID爲3的用戶的暱稱 $nickname = $User->where('id=3')->getField('nickname');
② 獲取某個字段列
$User = M("User"); // 實例化User對象 // 獲取status爲1的用戶的暱稱列表 $nickname = $User->where('status=1')->getField('nickname',true);
第二個參數傳入了true,返回的nickname則是一個數組,包含了全部知足條件的暱稱列表。
若是須要限制返回結果數量,可使用:
$nickname = $User->where('status=1')->getField('nickname',8);
③ 獲取2個字段列表
$User = M("User"); // 實例化User對象 // 獲取status爲1的用戶的暱稱列表 $nickname = $User->where('status=1')->getField('id,nickname');
④:更多用法:http://www.thinkphp.cn/info/174.html
500、表達式中運算符條件的查詢
SQL運算符 | 例子 | 實際查詢條件 | |
---|---|---|---|
eq | = | $map['id'] = array('eq',100); | 等效於:$map['id'] = 100; |
neq | != | $map['id'] = array('neq',100); | id != 100 |
gt | > | $map['id'] = array('gt',100); | id > 100 |
egt | >= | $map['id'] = array('egt',100); | id >= 100 |
lt | < | $map['id'] = array('lt',100); | id < 100 |
elt | <= | $map['id'] = array('elt',100); | id <= 100 |
like | like | $map<'username'> = array('like','Admin%'); | username like 'Admin%' |
between | between and | $map['id'] = array('between','1,8'); | id BETWEEN 1 AND 8 |
not between | not between and | $map['id'] = array('not between','1,8'); | id NOT BETWEEN 1 AND 8 |
in | in | $map['id'] = array('in','1,5,8'); | id in(1,5,8) |
not in | not in | $map['id'] = array('not in','1,5,8'); | id not in(1,5,8) |
and(默認) | and | $map['id'] = array(array('gt',1),array('lt',10)); | (id > 1) AND (id < 10) |
or | or | $map['id'] = array(array('gt',3),array('lt',10), 'or'); | (id > 3) OR (id < 10) |
xor(異或) | xor | 兩個輸入中只有一個是true時,結果爲true,不然爲false,例子略。 | 1 xor 1 = 0 |
exp | 綜合表達式 | $map['id'] = array('exp','in(1,3,8)'); $map['sum'] = array('exp','`sum`+'.$shuliang); |
$map['id'] = array('in','1,3,8'); |