ThinkPhp sql語句執行方法


ThinkPHP內置的ORM和ActiveRecord模式實現了方便的數據存取操作,而且新版增加的連貫操作功能更是讓這個數據操作更加清晰,但是ThinkPHP仍然保留了原生的SQL查詢和執行操作支持,為了滿足復雜查詢的需要和一些特殊的數據操作,SQL查詢的返回值因為是直接返回的Db類的查詢結果,沒有做任何的處理。

主要包括下面兩個方法:

1、query方法

query方法用於執行SQL查詢操作,如果數據非法或者查詢錯誤則返回false,否則返回查詢結果數據集(同select方法)。

使用示例:

  1. $Model = new \Think\Model() // 實例化一個model對象 沒有對應任何數據表
    $Model->query("select * from think_user where status=1");

如果你當前采用了分布式數據庫,並且設置了讀寫分離的話,query方法始終是在讀服務器執行,因此query方法對應的都是讀操作,而不管你的SQL語句是什么。

可以在query方法中使用表名的簡化寫法,便於動態更改表前綴,例如:

  1. $Model = new \Think\Model() // 實例化一個model對象 沒有對應任何數據表
    $Model->query("select * from __PREFIX__user where status=1");
    // 3.2.2版本以上還可以直接使用
    $Model->query("select * from __USER__ where status=1");

和上面的寫法等效,會自動讀取當前設置的表前綴。

2、execute方法

execute用於更新和寫入數據的sql操作,如果數據非法或者查詢錯誤則返回false ,否則返回影響的記錄數。

使用示例:

  1. $Model = new \Think\Model() // 實例化一個model對象 沒有對應任何數據表
    $Model->execute("update think_user set name='thinkPHP' where status=1");

如果你當前采用了分布式數據庫,並且設置了讀寫分離的話,execute方法始終是在寫服務器執行,因此execute方法對應的都是寫操作,而不管你的SQL語句是什么。

也可以在execute方法中使用表名的簡化寫法,便於動態更改表前綴,例如:

  1. $Model = new \Think\Model() // 實例化一個model對象 沒有對應任何數據表
    $Model->execute("update __PREFIX__user set name='thinkPHP' where status=1");
    // 3.2.2版本以上還可以直接使用
    $Model->execute("update __USER__ set name='thinkPHP' where status=1");

和上面的寫法等效,會自動讀取當前設置的表前綴。

摘自:ThinkPHP3.2完全開發手冊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM