首頁  >  文章  >  後端開發  >  thinkPHP框架中如何執行原生SQL語句

thinkPHP框架中如何執行原生SQL語句

不言
不言原創
2018-06-07 17:38:357622瀏覽

這篇文章主要介紹了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中文網!

相關建議:

ThinkPHP5框架簡單的實作批次查詢

ThinkPHP3.2框架使用addAll()批次插入資料的方法

thinkPHP5實作資料庫新增內容的方法

##

以上是thinkPHP框架中如何執行原生SQL語句的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn