SQL 連貫操作 1

2022-04-13 13:16:15 字數 4325 閱讀 2237

一. 連貫入門

查詢到 id 為 1,2,3,4 中按照建立時間的倒序的前兩位。

在 home/controller/usercontroller.class.php 下插入

1、連貫操作入門

$user = m('user');

var_dump($user->where('id in (1,2,3,4)')->order('date desc')->limit(2)->select());

得到的sql查詢語句為

ps:這裡的 where、order 和 limit 方法都是連貫操作方法,所以它們都能返回$user本身,

可以互換位置。而 select 方法不是連貫方法,需要放在最後,用以顯示資料集。

2、陣列操作

$user = m('user');

var_dump($user->select( array('where'=>'id in (1,2,3,4)', 'limit'=>'2','order'=>'date desc')));

或者是

$user = m('user');

var_dump($user->select(array('where'=>array('id'=>array('neq','1')),'order'=>'date desc','limit'=>'2')));

二. 連貫方法1.where

where 方法支援字串條件、陣列條件(推薦用法)和多次呼叫

//

字串方式

$user = m('user');

var_dump($user->where('id=1')->select());

//

索引陣列方式

$user = m('user');

$map['id'] = 1;

var_dump($user->where($map)->select());

$user = m('user');

$map['id'] = array('eq', 1);

var_dump($user->where($map)->where('user="蠟筆小新"')->select());

2.order

order 用於對結果集排序。

//

倒序$user = m('user');

$map['id'] = array('eq', 1);

var_dump($user->order('id desc')->select()); //

正序預設或 asc

//

第二排序

var_dump($user->order('id desc,email desc')->select());

ps:先按 id 倒序,再按 email 倒序

這個用法在這個資料庫裡是沒有什麼意義的,但是如果是在比較成績的時候就可以使用了,比如將id換成語文成績,email換成數學成績,

當語文成績是一樣的時候,那這時候就比較數學成績了,這時候才用到兩個排序的功能。

//

陣列形式防止欄位和mysql關鍵字衝突

$user = m('user');

$map['id'] = array('eq', 1);

var_dump($user->order( array('id'=>'desc'))->select());

使用陣列的形式就是能夠在sql查詢的時候在user等字段上加上``符號,更安全。

3.feild

feild 方法可以返回或操作字段,可以用於查詢和寫入操作。

只顯示id和user兩個字段
$user = m('user');

var_dump($user->field('id, user')->select());

使用sql函式和別名

$user = m('user');

var_dump($user->field('sum(id) as nihao, user')->select());

其中 'sum(id) as nihao 中的nihao為設定的別名,在瀏覽器中顯示為

使用陣列引數結合sql函式

$user = m('user');

var_dump($user->field( array('id','left(user,3)'=>'left_user'))->select());

這時只顯示user中資料的前三個字

並且其中的 left_user 也是設定的別名,在sql查詢語句中為:

獲取所有字段

$user = m('user');

var_dump($user->field()->select());

4.limit

limit 方法主要用於指定查詢和操作的數量。

限制結果集數量

$user = m('user');

var_dump($user->limit(2)->select());

分頁查詢

$user = m('user');

var_dump($user->limit(0,2)->select());

5.page

page 方法完全用於分頁查詢。

$user = m('user');

var_dump($user->page(1,2)->select()); //第乙個1是頁碼數,第二個2是條數

6.table

table 方法用於資料表操作,主要是切換資料表或多表操作。

切換資料表

$user = m('user');

var_dump($user->table('think_info')->select());

獲取簡化表名

$user = m('user');

var_dump($user->table('__user__')->select());

注意的是,因為資料表名為think_user,所以這裡是__user__,即user兩邊都是兩個下劃線,且必須大寫,這裡的user是資料表的字尾名

多表查詢

$user = m('user');

var_dump($user->field('a.id,b.id')->table('__user__ a,__info__ b')->select());

也就是獲得兩個資料表中的id,在瀏覽器中為

在sql查詢語句中為

多表查詢,使用陣列形式避免關鍵字衝突

$user = m('user');

var_dump($user->field('a.id,b.id')->table( array('think_user'=>'a',

'think_info'=>'b'))->select());

這時,即為查詢的資料表加上``符號。

alias 用於設定資料表別名

$user = m('user');

var_dump($user->alias('a')->select());

不使用別名的時候:

使用別名的時候

都沒有了``符號,也不知道是用來幹嘛的

php oop連貫操作原理

php oop連貫操作原理 符號其實是傳遞物件指標的。或許這麼說是不對的。但是,我們可以這麼的理解。不多說。放 普通用法 class test public function actionb public function actionc oktest new test oktest actiona...

call方法以及連貫操作

如果呼叫類中不存在的方法,一定會出現系統錯誤,我們可以利用 call 來提醒呼叫的方法不存在 call 存在兩個引數,第乙個引數是不存在的方法,第乙個引數 其實就是那個不存在的方法 所設定的引數將會以陣列的形式傳遞給第二個引數 接下來主要介紹連貫操作,連貫操作,呼叫不存在的方法,利用 call 將不...

CodeIgniter連貫操作的底層原理分析

php oop連貫操作原理 符號其實是傳遞物件指標的。或許這麼說是不對的。但是,我們可以這麼的理解。不多說。放 普通用法 public function actionb public function actionc oktest new test oktest actiona oktest act...