首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP 3.x/5.x 查詢方式全景速查:普通、表達式、區間、統計、原生 SQL

     編輯:PHP 綜合知識

ThinkPHP 的查詢構建器提供流暢介面,支援多種查詢語法。本文系統整理五大類查詢方式,附代碼片段與適用場景,適合桌邊速查。

1. 普通查詢(字符串 vs 陣列)

// 字符串(不推薦,需手動加引號)
$m->where('id=1 and name="roge"')->find();

// 陣列(推薦,自動處理類型與轉義)
$data['name'] = 'adfa';
$data['id']   = 3;
$data['_logic'] = 'or'; // 預設 and
$m->where($data)->find();

2. 表達式查詢(關鍵字不區分大小寫)

關鍵字SQL 等價示例
EQ=['id'=>['eq',5]]
NEQ!=['id'=>['neq',5]]
GT>['id'=>['gt',10]]
EGT>=['id'=>['egt',10]]
LT<['id'=>['lt',20]]
ELT<=['id'=>['elt',20]]
LIKELIKE['name'=>['like','%think%']]
NOTLIKENOT LIKE['name'=>['notlike','%test%']]
ININ (...)['id'=>['in','1,2,3']]
NOTINNOT IN (...)['id'=>['notin','1,2,3']]
BETWEENBETWEEN ... AND ...['id'=>['between','5,10']]
NOTBETWEENNOT BETWEEN ... AND ...['id'=>['notbetween','5,10']]
EXP原生表達式['id'=>['exp','IN(1,2,3)']]

多值邏輯:['name'=>['like',['%a%','%b%'],'or']](預設 or,可指定 and)

3. 區間查詢(複合條件)

$data['id'] = [
    ['gt', 5],
    ['lt', 10]
]; // 默認 AND:5 < id < 10

// 顯式 OR
$data['id'] = [
    ['lt', 5],
    ['gt', 10],
    'or'
];

// 字符串字段多 LIKE
$data['name'] = [
    ['like', '%d%'],
    ['like', '%e%'],
    'nick', // 字段別名(可選)
    'or'
];
$m->where($data)->select();

4. 統計查詢(聚合函數)

$m->count('id');   // COUNT(id)
$m->max('score');  // MAX(score)
$m->min('score');
$m->avg('price');
$m->sum('amount');

可鏈式:$m->where('status=1')->count()

5. 原生 SQL 查詢(繞過構建器)

$m = M(); // 空模型實例
// 讀操作
$list = $m->query("SELECT * FROM think_user WHERE id > 1");
// 寫操作
$m->execute("INSERT INTO think_user(name) VALUES ('dfd')");
  • query():返回結果集陣列
  • execute():返回影響行數/插入 ID

進階技巧

  • 字段排除:$m->field('password,secret', true)->select()(true 表示排除)
  • 鎖機制:$m->lock(true)->find()(FOR UPDATE)
  • 分頁:$m->page(2,15)->select() 或 $m->limit(15)->page(2)->select()
  • 調試 SQL:echo $m->getLastSql() 查看實際執行語句

熟練掌握 ThinkPHP 查詢構建器,能將 90% 以上的 SQL 寫為鏈式調用,兼顧可讀性與安全性(自動參數綁定)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved