# 函數原型
~~~
public function where($mixCond /* args */);
~~~
# 字段 (表達式) 值
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`id` = 1
database::table ( 'test' )->where ( 'id', '=', 1 )->getAll ();
# SELECT `test`.* FROM `test` WHERE `test`.`id` = 2
database::table ( 'test' )->where ( 'id', 2 )->getAll ();
# SELECT `test`.* FROM `test` WHERE `test`.`id` = 2 AND `test`.`name` > '狗蛋' AND `test`.`value` LIKE '小鴨子'
database::table ( 'test' )->where ( 'id', 2 )->where ( 'name', '>', '狗蛋' )->where ( 'value', 'like', '小鴨子' )->getAll ();
~~~
# 以數組直接傳入
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`name` LIKE '技術'
database::table ( 'test' )->where ( ['name','like', '技術'] )->getAll ();
# SELECT `test`.* FROM `test` WHERE `test`.`name` LIKE '技術' AND `test`.`value` <> '結局'
database::table ( 'test' )->where ([['name','like', '技術'], ['value','<>', '結局'] ])->getAll ();
~~~
# OrWhere 語法
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`name` LIKE '技術'
database::table('test')->where('name','like', '技術')->orWhere('value','<>', '結局')->getAll();
~~~
# whereBetween 語法
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`id` BETWEEN 1 AND 100
database::table('test')->whereBetween('id', [1, 100])->getAll();
# SELECT `test`.* FROM `test` WHERE `test`.`id` BETWEEN 1 AND 10
database::table('test')->where('id','between', [1,10])->getAll();
~~~
# whereBetween 二維數組語法支持
后面的語法均支持這樣的寫法,后面不再繼續示例了。
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`id` BETWEEN 1 AND 100 AND `test`.`name` BETWEEN 5 AND 22
database::table('test')->whereBetween( [ ['id', [1, 100]], ['name', [5, 22]] ])->getAll();
~~~
# whereNotBetween 語法
~~~
#SELECT `test`.* FROM `test` WHERE `test`.`id` NOT BETWEEN 1 AND 10
database::table('test')->whereNotBetween('id', [1,10])->getAll();
# SELECT `test`.* FROM `test` WHERE `test`.`id` NOT BETWEEN 1 AND 10
database::table('test')->where('id','not between', [1,10])->getAll();
~~~
# whereIn 語法
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`id` IN (2,50)
database::table('test')->whereIn('id', [2,50])->getAll();
# SELECT `test`.* FROM `test` WHERE `test`.`id` IN ('1','10')
database::table('test')->where('id','in', '1,10')->getAll();
# SELECT `test`.* FROM `test` WHERE `test`.`id` IN (2,50)
database::table('test')->where('id','in', [2,50])->getAll();
~~~
# whereNotIn 語法
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`id` NOT IN (2,50)
database::table('test')->whereNotIn('id', [2,50])->getAll();
# SELECT `test`.* FROM `test` WHERE `test`.`id` NOT IN ('1','10')
database::table('test')->where('id','not in', '1,10')->getAll();
~~~
# whereNull 語法
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`id` IS NULL
database::table('test')->whereNull('id')->getAll();
# SELECT `test`.* FROM `test` WHERE `test`.`id` IS NULL
database::table('test')->where('id','null')->getAll();
~~~
# whereNotNull 語法
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`id` IS NOT NULL
database::table('test')->whereNotNull('id')->getAll();
# SELECT `test`.* FROM `test` WHERE `test`.`id` IS NOT NULL
database::table('test')->where('id','not null')->getAll();
~~~
# whereExists 語法
~~~
# SELECT `test`.* FROM `test` WHERE EXISTS ( SELECT `subsql`.* FROM `subsql` WHERE `subsql`.`id` = 1 )
database::table ( 'test')->whereExists ( function($objSelect){
$objSelect->table ( 'subsql')->where('id',1);
}
)
->getAll ();
# SELECT `test`.* FROM `test` WHERE EXISTS ( SELECT `subsql`.* FROM `subsql` )
$objSubSelect = database::table ( 'subsql');
database::table ( 'test')->where (
[
'exists__' => $objSubSelect
]
)
->getAll ();
# SELECT `test`.* FROM `test` WHERE EXISTS ( select *from d_sub )
database::table ( 'test')->where (
[
'exists__' => 'select *from d_sub'
]
)
->getAll ();
# SELECT `test`.* FROM `test` WHERE EXISTS ( SELECT `subsql`.* FROM `subsql` WHERE `subsql`.`id` = 1 )
database::table ( 'test')->where (
[
'exists__' => function($objSelect){
$objSelect->table ( 'subsql')->where('id',1);
}
]
)
->getAll ();
~~~
# 分組查詢
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`id` = '5' OR (`test`.`votes` > 100 AND `test`.`title` <> 'Admin')
database::table ( 'test' )->where ( 'id', 5 )->orWhere ( function ($objSelect) {
$objSelect->where ( 'votes', '>', 100 )->where ( 'title', '<>', 'Admin' );
} )->getAll ();
# SELECT `test`.* FROM `test` WHERE `test`.`id` = '5' OR `test`.`name` = '小牛' AND (`test`.`votes` > 100 OR `test`.`title` <> 'Admin')
database::table ( 'test' )->where ( 'id', 5 )->orWhere ( 'name', '小牛' )->where ( function ($objSelect) {
$objSelect->where ( 'votes', '>', 100 )->orWhere ( 'title', '<>', 'Admin' );
} )->getAll ();
~~~
# 條件表達式支持
條件表達式由“{}”包起來表示支持條件表達式,“[]”表示支持字段格式化。
~~~
# SELECT `test`.`post`,`test`.`value`,concat("tt_",`test`.`id`) FROM `test` WHERE concat("hello_",`test`.`posts`) = `test`.`id`
database::table ( 'test', 'post,value,{concat("tt_",[id])}' )->where ( '{concat("hello_",[posts])}', '=', '{[id]}' )->getAll ();
~~~
# 字段作為鍵值
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`id` = '故事' AND `test`.`name` IN (1,2,3) AND `test`.`weidao` BETWEEN '40' AND '100' AND `test`.`value` IS NULL AND `test`.`remark` IS NOT NULL AND `test`.`goods` = '東亞商品' AND `test`.`hello` = 'world'
database::table ( 'test' )->where ( [
'id' => [ '=','故事' ],
'name' => ['in',[1,2,3]],
'weidao' => ['between','40,100'],
'value' => 'null',
'remark' => ['not null'],
'goods' => '東亞商品',
'hello' => ['world']
] )->getAll ();
~~~
# string__ 支持(支持字段)
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`name` = 11 and `post`.`value` = 22 and concat("tt_",`test`.`id`)
database::table ( 'test')->where (
['string__' => '{[name] = 11 and [post.value] = 22 and concat("tt_",[id])}']
)->getAll ();
~~~
# subor__ 和 suband__ 支持
~~~
# SELECT `test`.* FROM `test` WHERE `test`.`hello` = 'world' OR (`test`.`id` LIKE '你好')
database::table ( 'test')->where (
[
'hello' => 'world',
'subor__' => ['id','like','你好']
]
)
->getAll ();
# SELECT `test`.* FROM `test` WHERE `test`.`hello` = '111' OR (`test`.`id` LIKE '你好' AND `test`.`value` = 'helloworld') AND (`test`.`id` LIKE '你好' OR `test`.`value` = 'helloworld' OR (`test`.`child_one` > '123' AND `test`.`child_two` LIKE '123'))
database::table ( 'test')->where (
[
'hello' => '111',
'subor__' => [
['id','like','你好'],
['value','=','helloworld']
],
'suband__' => [
'logic__' => 'or',
['id','like','你好'],
['value','=','helloworld'],
'subor__' => [
['child_one','>','123'],
['child_two','like','123'],
]
]
]
)
->getAll ();
~~~
- 關于 QueryPHP
- 獲取 QueryPHP
- 環境要求
- 許可協議 Free
- 執行流程 MVC
- 命名規范 $sName
- 目錄結構 DIR
- 單一入口 index.php
- 響應客戶端請求 URL
- 命名空間與自動載入 Autoload
- 路由
- 路由導入
- 批量導入
- 參數正則
- 分組定義
- 路由綁定
- 路由域名
- 分層控制器
- 默認和初始化APP
- 默認控制器和方法
- url 模式
- url 生成
- url 偽靜態
- url 重寫
- url 重定向
- 控制器綁定
- 方法器分層
- 控制器 __init
- 控制器方法交互
- 模板引擎語法
- C變量輸出 $sName
- C變量支持函數和方法 $sName|trim
- C快捷輸出 ~
- C標簽簡化 Css & Javascript
- C默認值 eq 三元運算符
- C變量運算符 +-
- 變量遞增遞減 ++--
- C循環數據 list
- N變量賦值 assign
- N循環數據 list
- N循環數據高級版 lists
- C循環數據 while
- N循環數據 while
- C循環數據 for
- N循環數據 for
- C條件判斷 if
- N條件判斷 if
- 標簽嵌套無限層級
- N循環流程 break & continue
- N使用 PHP 代碼
- N包含子模板 include
- J模板引擎 intro
- J條件判斷 if
- J循環數據 each
- J變量 & 表達式
- J變量支持函數和方法 hello|test
- J默認值 eq 三元運算符
- J框架前端組件 jquery.queryphp.js
- J前端 CSS 規范
- J前端 JS 規范
- 保護標簽自身 tagself
- 數據庫
- 數據庫配置
- 執行原生 sql 語句
- 數據庫事務
- 數據庫構造器 prefix
- 數據庫構造器 table
- 數據庫構造器 forceIndex
- 數據庫構造器 where
- 數據庫構造器 bind
- 數據庫構造器 join
- 數據庫構造器 union
- 數據庫構造器 orderBy
- 數據庫構造器 groupBy
- 數據庫構造器 having
- 數據庫構造器 distinct
- 數據庫構造器 aggregate
- 數據庫構造器 limit
- 數據庫構造器 forUpdate
- 數據庫構造器 columns
- 數據庫構造器 reset
- 數據庫集合查詢
- 數據庫查詢數據 get
- 數據庫查詢多條數據 getAll
- 數據庫查詢單條數據 getOne
- 數據庫查詢聚合查詢 aggregate
- 數據庫寫入數據 insert
- 數據庫寫入數據 insertAll
- 配置
- 配置格式
- 慣性配置
- 配置文件
- 讀取配置
- 設置配置
- 刪除配置
- 日志
- 日志配置參數
- 日志路徑
- 日志過濾器
- 日志處理器
- 緩存
- 緩存配置參數
- 緩存路徑
- 緩存指定時間
- COOKIE
- COOKIE 配置參數
- 開發調試
- 頁面 trace