thinkphp查詢,3.X 5.0 親試可行

来源:http://www.cnblogs.com/li1056822533/archive/2017/06/16/7029478.html
-Advertisement-
Play Games

[php] view plain copy print? [php] view plain copy print? [php] view plain copy print? [php] view plain copy print? ...


[php] view plain copy    print?
  1.  
  2.   
  3. 一、介紹  
  4.   
  5. ThinkPHP內置了非常靈活的查詢方法,可以快速的進行數據查詢操作,查詢條件可以用於讀取、更新和刪除等操作,主要涉及到where方法等連貫操作即可,無論是採用什麼資料庫,你幾乎採用一樣的查詢方法(個別資料庫例如Mongo在表達式查詢方面會有所差異),系統幫你解決了不同資料庫的差異性,因此我們把框架的這一查詢方式稱之為查詢語言。查詢語言也是ThinkPHP框架的ORM亮點,讓查詢操作更加簡單易懂。下麵來一一講解查詢語言的內涵。  
  6.   
  7. 二、查詢方式  
  8.   
  9. ThinkPHP可以支持直接使用字元串作為查詢條件,但是大多數情況推薦使用索引數組或者對象來作為查詢條件,因為會更加安全。  
  10.   
  11. 1.使用字元串作為查詢條件  
  12.   
  13. 這是最傳統的方式,但是安全性不高,例如:   
  14.   
  15.     <?php  
  16.     $User = M("User"); // 實例化User對象   
  17.     $User->where('type=1 AND status=1')->select();   
  18.     ?>  
  19.   
  20. 最後生成的SQL語句是   
  21.   
  22.     SELECT * FROM think_user WHERE type=1 AND status=1  
  23.   
  24. 採用字元串查詢的時候,我們可以配合使用新版提供的字元串條件的安全預處理機制,暫且不再細說。  
  25.   
  26. 2.使用數組作為查詢條件  
  27.   
  28. 這種方式是最常用的查詢方式,例如:  
  29.   
  30.     <?php  
  31.     $User = M("User"); // 實例化User對象   
  32.     $condition['name'] = 'thinkphp';   
  33.     $condition['status'] = 1;   
  34.     // 把查詢條件傳入查詢方法   
  35.     $User->where($condition)->select();   
  36.     ?>  
  37.   
  38. 最後生成的SQL語句是   
  39.   
  40.     SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1  
  41.   
  42. 如果進行多欄位查詢,那麼欄位之間的預設邏輯關係是 邏輯與 AND,但是用下麵的規則可以更改預設的邏輯判斷,通過使用 _logic 定義查詢邏輯:   
  43.   
  44.     <?php  
  45.     $User = M("User"); // 實例化User對象   
  46.     $condition['name'] = 'thinkphp';   
  47.     $condition['account'] = 'thinkphp';   
  48.     $condition['_logic'] = 'OR';   
  49.     // 把查詢條件傳入查詢方法   
  50.     $User->where($condition)->select();   
  51.     ?>  
  52.   
  53. 最後生成的SQL語句是   
  54.   
  55.     SELECT * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'  
  56.   
  57. 3.使用對象方式來查詢   
  58.   
  59. 這裡以stdClass內置對象為例:   
  60.   
  61. <?php  
  62. $User = M("User"); // 實例化User對象   
  63. // 定義查詢條件   
  64. $condition = new stdClass();    
  65. $condition->name = 'thinkphp';    
  66. $condition->status= 1;    
  67. $User->where($condition)->select();  
  68. ?>  
  69.   
  70. 最後生成的SQL語句和上面一樣  
  71.   
  72.     SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1  
  73.   
  74. 使用對象方式查詢和使用數組查詢的效果是相同的,並且是可以互換的,大多數情況下,我們建議採用數組方式更加高效。  
  75.   
  76. 三、表達式查詢  
  77.   
  78. 上面的查詢條件僅僅是一個簡單的相等判斷,可以使用查詢表達式支持更多的SQL查詢語法,也是ThinkPHP查詢語言的精髓,  
  79.   
  80. 查詢表達式的使用格式:$map['欄位名'] = array('表達式','查詢條件');   
  81.   
  82. 表達式不分大小寫,支持的查詢表達式有下麵幾種,分別表示的含義是:   
  83.    
  84.     EQ 等於(=)   
  85.     NEQ 不等於(<>)   
  86.     GT 大於(>)   
  87.     EGT 大於等於(>=)   
  88.     LT 小於(<)   
  89.     ELT 小於等於(<=)   
  90.     LIKE 模糊查詢   
  91.     [NOT] BETWEEN (不在)區間查詢   
  92.     [NOT] IN (不在)IN 查詢   
  93.     EXP 表達式查詢,支持SQL語法   
  94.   
  95.   
  96. 示例如下:  
  97.   
  98. 1.EQ :等於(=)  
  99.   
  100.     例如:$map['id']  = array('eq',100);和下麵的查詢等效 $map['id']  = 100;表示的查詢條件就是 id = 100  
  101.   
  102. 2.NEQ: 不等於(<>)  
  103.   
  104.     例如:$map['id']  = array('neq',100);表示的查詢條件就是 id <> 100  
  105.   
  106. 3.GT:大於(>)  
  107.   
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 公司有幾台美國的伺服器,平時也比較空閑,利用ssh搭了個隧道作為自己fq使用 辦公網路是一臺windows主機,不過上面裝了一個linux虛擬機,平時習慣使用虛擬機做開發機 辦公網路可以直接ssh通過內網地址鏈接美國伺服器 linux 虛擬機使用NAT模式上網ip:192.168.56.100 辦公 ...
  • http://blog.chinaunix.net/uid-7828352-id-4472376.html 寫的不錯,尤其是uboot向linux內核傳遞參數的過程寫的比較詳細。 ...
  • 由於我們有時候沒法預估或者說錯誤的盤符分區的時候,常常會導致我們後面的操作出現極大的不方便,這裡我就記錄下一個錯誤分區後對home和根分區存儲空間大小調整的整個過程!      ①查看我們現有機器的分區狀況 ...
  • 自 VS2010 起,微軟就在 CRT 中集成了併發運行時(Concurrency Runtime),並行模式庫(PPL,Parallel Patterns Library)是其中的一個重要組成部分。7 年過去了,似乎大家都不怎麼Care這個事情,相關文章少少且多是蜻蜓點水。實際上這個庫的設計相當精 ...
  • 這是我之前開發的文件夾自動同步工具,主要實現開發機和伺服器之間的文件夾同步。 項目地址: https://github.com/mike-zhang/autoSync 問題描述 在windows下修改代碼,到伺服器上去編譯,但每次都要通過winscp之類的工具拖拽上去(當然你也可以通過scp命令行的 ...
  • java.util.Collection介面 是集合的最頂層的介面,定義了集合共性的方法 介面無法直接創建對象,使用多態的方式創建對象 Collection<集合中的數據類型(泛型)> coll = new ArrayList<集合中的數據類型(泛型)>(); 迭代器 集合中存儲數據的方式(數據類型 ...
  • 接收參數的方式: 1.HttpServletRequest方式接收 public ModelAndView test1(HttpServletRequest req){ String userName = req.getParameter("userName"); String password = ...
  • 在《演算法競賽入門經典》一書中 習題1-5 打折 (discount)一件衣服95元,若消費滿300元,可打八五折。輸入購買衣服件數,輸出需要支付的金額(單位:元),保留兩位小數。 我編寫的代碼為 #include<iostream> #include<iomanip> using namespace ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...