這篇文章主要介紹了thinkPHP框架中執行原生SQL語句的方法,結合實例形式分析了thinkPHP中執行原生SQL語句的相關操作技巧,並簡單分析了query與execute方法的使用區別,需要的朋友可以參考下
本文實例講述了thinkPHP框架中執行原生SQL語句的方法。分享給大家供大家參考,具體如下:
怎麼在thinkphp裡面執行原生的sql語句?
$Model = new Model();//或者 $Model = D(); 或者 $Model = M(); $sql = "select * from `order`"; $voList = $Model->query($sql);
只是需要new一個空的模型繼承Model中的方法。
注意query是查功能,execute是增刪改功能
查詢與讀取屬性值的實例:
$sql = "select * from goods"; $Model = M(); $result = $Model->query($sql); foreach ($result as $k=>$val){ $goods_id = $val["goods_id"]; }
tP的模型可以支援原生SQL操作,提供了query和execute兩個方法,為什麼原生SQL還要區分兩個方法呢,原因有兩個:
1、傳回型別不同
query用來查詢,傳回的是資料集,跟select或findall一樣,所以可以直接在範本裡面使用volist標籤輸出query的查詢結果
execute用來寫入操作,傳回的是狀態或影響的記錄數
2、讀寫統計需要
為了方便統計目前的資料讀寫次數,把資料庫的讀取和寫入操作分開(對應的就是query和execute)
使用原生SQL很簡單,我們甚至不需要實例化任何的模型,例如:
$Model = new Model(); // 实例化一个空模型
下面的方法是等效的
$Model = D();// 或者 $Model = M(); // 下面执行原生SQL操作 $Model->query('select * from think_user where status=1'); $Model->execute('update think_user set status=1 where id=1');
如果你實例化了某個模型,仍然可以執行原生SQL操作,不受影響,例如:
$User = D('User'); $User->query('select * from think_user where status=1'); $User->execute('update think_user set status=1 where id=1');
在這種情況下面,我們可以簡化SQL語句的寫法,例如:
$User->query('select * from __TABLE__ where status=1'); $User->execute('update __TABLE__ set status=1 where id=1');
系統會自動把__TABLE__替換成目前模型對應的資料表名稱,實際的資料表由模型決定。
通常來說,我們都是使用原生SQL運算實作一些ORM和CURD比較難實現的操作,另外,如果SQL不複雜的話原生SQL的效率和連貫操作的效率差異是微乎其微的,TP本身的ORM實作也是相當有效率的。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關建議:
ThinkPHP3.2框架使用addAll()批次插入資料的方法
##
以上是thinkPHP框架中如何執行原生SQL語句的詳細內容。更多資訊請關注PHP中文網其他相關文章!