国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

ThinkPHP教程_PHP框架之ThinkPHP(九)查詢語言

2020-03-22 19:43:34
字體:
來源:轉載
供稿:網友
  • 一、概述

      1、ThinkPHP支持直接使用字符串作為查詢條件,但是大多數情況下推薦使用索引數組或對象來作為查詢條件,因為更加安全!

      2、查詢條件可以用于CURD等任何操作,作為where方法的參數傳入即可,ThinkPHP內置了非常靈活的查詢方法,可以快速的進行數據查詢操作,下面來一一講解查詢語言的內涵。

      3、查詢語言分為普通查詢、區間查詢、組合查詢、復合查詢、統計查詢、定位查詢、SQL查詢、動態查詢

    二、普通查詢

      查詢條件可以為String、Array或Object類型

      1、字符串

      

      

      注意,如果連貫操作的方法采用String類型的參數,那么參數就得按照原生sql語句的寫法。這里的'username='Tiger''就驗證了這句話,如果Tiger沒有用''包起來,則會出錯!

      2、數組(索引數組)

      

      

      3、對象

      

      

      4、不知道大伙有沒有發現,以上關于參數Array和Object類型的兩個例子只能做到了一個相等的查詢條件,那么怎么通過Array或Object類型參數來實現更加復雜的查詢條件呢(顯然String類型參數是可以做到的,故不贅述)?即使用查詢表達式。以Array類型為例,Object類型同理!$condition['字段名']=array('表達式','查詢條件');即內層數組的第一個元素值表示表達式、第二個元素值表示查詢條件。表達式不區分大小寫

        ·eq(相等)

        

        

        ·neq(不等)

        ·gt(大于)

        ·egt(大于等于)

        ·lt(小于)

        ·elt(小于等于)

        ·like(同原生sql語句中的LIKE)

        可以進行模糊匹配

        

        

        在應用配置文件中可以配置DB_LIKE_FIELDS,那么被配置項匹配的字段將會自動進行模糊匹配。比如說$condition['username']='Tiger';相當于username like '%Tiger%'

        ·between/notbetween

        查詢條件支持String或Array類型,即內層數組的第二個元素值可以是字符串或數組  

        

        

        ·in/notin

        查詢條件同樣支持String和Array類型

        

        

        ·exp

        表達式,支持更復雜的查詢情況

        查詢條件是一個按照原生sql語句格式書寫的完整的查詢表達式(可以使用原生sql語句支持的語法,包括使用sql函數、字段等等)(額,似乎回到了where(字符串查詢條件)),即內層數組的第二個元素值是一個完整的查詢表達式

        查詢條件只支持String類型

        

        

        其不僅可以用于查詢表達式,還可以用于更新操作

        

    三、區間查詢

      ThinkPHP支持對某個字段進行區間查詢

      

      

      內層數組的最后一個元素值默認是'AND',也可以是'OR','XOR' 

      內層數組的最后一個元素之前并不是只可能有兩個元素,而是可以有多個元素的,且元素值為數組

      

      

    四、組合查詢

      1、ThinkPHP在進行多字段查詢時,默認的邏輯關系是邏輯與(AND),可以通過外層數組元素鍵'_logic'指定邏輯關系

      

      

      2、通過外層數組元素鍵'_string'還可以實現數組條件與字符串條件混合使用

      

      

    五、復合查詢

      通過外層數組元素鍵'_complex'可以指定查詢子條件

      

      

    六、統計查詢

      在實際開發中,經常會用到統計數據,比如說,當前所有(或滿足某些條件)的用戶數、所有用戶的最大積分、用戶的平均成績等等。ThinkPHP會這些可能的統計操作都設計了相應的內置方法

      而且統計查詢方法都支持連貫操作。那么顯然可以用where()方法定義查詢范圍咯

      1、count()方法

      獲取當前數據表的記錄數

      

      2、max()方法

      獲取數據表中某個字段最大值

      

      3、min()方法

      與max()同理

      4、avg()方法

      與max()同理

      5、sum()方法

      與max()同理

    七、定位查詢

      ThinkPHP支持定位查詢,但是必須要求當前模型繼承高級模型類,可以使用getN()方法直接訪問結果中某個位置的記錄

      getN(正整數)、getN(負整數)、first()、last()

    八、SQL查詢

      ThinkPHP仍然保留了原生的SQL查詢(R)和執行(CUD)操作支持,為了滿足復雜查詢的需要和一些特殊的數據操作,SQL查詢的返回值是直接返回Db類的查詢結果,沒有做任何的處理。而且可以支持查詢緩存

      1、query()方法

      有受影響行數,且有結果集,用該方法。參數為完整的原生sql語句

      2、execute()方法

      有受影響函數,沒有結果集,用該方法。參數為完整的原生sql語句

    九、動態查詢

      1、直接根據數據表的字段進行查詢,但是只支持單字段

      

      

      2、獲取符合條件的前N條記錄

      直接使用topN()方法,同樣的必須繼承高級模型

      

      

      

      

      對于ThinkPHP的動態查詢,咋一看可能不太好理解,可能會問,$User這個對象哪來的getByUsername()、top3()或top()方法呢?Model類和AdvModel類都沒有這些方法,而自定義的UserModel類也沒有這些方法?!

      PHP同JavaScript一樣,也支持動態給對象添加公開的屬性或方法!

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 印江| 德令哈市| 定安县| 东港市| 巴彦淖尔市| 米泉市| 达州市| 许昌县| 昌江| 阿拉善右旗| 疏勒县| 大石桥市| 巴楚县| 盐津县| 鄢陵县| 朔州市| 罗甸县| 汉源县| 哈尔滨市| 呼图壁县| 芦溪县| 霍山县| 阿勒泰市| 金塔县| 利辛县| 洪江市| 二连浩特市| 安乡县| 贡嘎县| 贺兰县| 北海市| 蓬安县| 芮城县| 泰州市| 泰宁县| 昌平区| 个旧市| 乌鲁木齐市| 新沂市| 微山县| 平舆县|