1. 程式人生 > >tp框架數據查詢,增刪改

tp框架數據查詢,增刪改

數據模型 數據查詢 數據庫 修改 limit 一個表 網址 執行 頁面

select()是數據模型的一個指定方法,可以獲得數據表的數據信息

返回一個二維數組信息,當前數據表的全部數據信息

$obj = D(); 創建對象

$obj -> select(); 查詢數據

select 字段,字段 from 表名 where 條件 group 字段 having 條件 order 排序 limit 限制條數;

SELECT%DISTINCT%%FIELD%FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%%COMMENT%

$obj -> field(字段,字段); 查詢指定字段

$obj -> table(數據表); 設置具體操作數據表

$obj -> where(參數); 參數就是正常sql語句where後邊的條件信息

例如:( “goods_price >100 and goods_name like ‘三%’”)

$obj -> group(字段); 根據字段進行分組查詢

$obj -> having(參數條件); having 條件設置

$obj -> order(‘price desc/asc’) 排序查詢

$obj -> limit([偏移量,]條數) 限制查詢的條數

sql語句裏邊具體的條件設置在tp框架model模型裏邊體現為具體的方法操作

以上方法理論上是父類Model的對應方法

父類model具體存在方法: field() where() limit()

還有一些方法在__call()自動調用函數裏邊: table() group() order() having()

在__call()魔術方法裏邊會判斷當前的執行方法是否是一個method屬性的元素信息,如果存在就會執行執行

以上多個方法是同時使用多個進行條件顯示(並且沒有順序要求)

$obj -> limit(5)->field(‘id,name’)->order(‘price asc’) -> table(‘sw_goods’)->select();

以上許多方法執行沒有順序要求,許多方法執行後都是把具體的參數賦予到model屬性

options裏邊,最後根據options拼裝sql語句。

$info = $goods -> where()->field(字段)->select();

select()方法

1. 返回一個二維數組信息

2. 返回全部數據表信息

3. 給該方法傳遞參數

a) select(30) 查詢主鍵值等於30的記錄信息

b) select(“10,12,14”) 查詢主鍵值在10、12、14範圍的記錄信息

  1. find()如果我們查詢的結果只有一個信息,使用select()會返回一個二維數組

為了使用方便我們會希望返回一個一維數組,這時候可使用find()方法

  1. having()方法設置查詢條件,where()設置查詢條件

6. 相關聚合函數 count() sum() avg() max() min()

以上聚合函數是最後被調用的方法

以上方法可以結合具體條件方法使用

例如:$goods -> where(‘goods_price >1000’)->count(); 大於1000元的商品的總數目

【數據添加】

add() 該方法返回被添加的新記錄的主鍵id值

兩種方式實現數據添加

  1. 數組方式數據添加

$goods = D(“Goods”);

$arr = array(‘goods_name’=>’iphone5s’,’goods_weight’=>’109’);

//註意:goods_name和goods_weight是數據表中字段名稱

$goods -> add($arr);

  1. AR方式實現數據添加

a) ActiveRecord 活躍記錄

b) AR規定了程序與數據庫之間的關系

c) 什麽是AR:

d) ① 一個數據表對應一個類model

e) ② 一條數據記錄對應類的一個對象

f) ③ 每個字段對應該對象的具體屬性

g) tp框架的AR是假的

$goods = D(“Goods”);

$goods -> goods_name = “htc_one”;

$goods -> goods_price = 3000;

$goods -> add();

以上兩種方式:數組、AR,最後add都要把新記錄的主鍵id值返回

【收集表單數據入庫操作】

  1. 制作一個表單
  2. 通過$_POST收集信息
  3. 通過create()方法實現數據收集,該方法對於非法的字段會自動進行過濾

註意:一個add控制器實現兩個邏輯,一個是打出添加頁面,一個是向數據庫添加內容

註意:如果是主鍵值重復,這種錯誤會導致error()方法不跳轉頁面直接拋出錯誤信息,這是新版本問題,如果想要跳轉,找到

【數據修改操作】

save() 實現數據修改,返回受影響的記錄條數

具體有兩種方式實現數據修改,與添加類似(數組、AR方式)

  1. 數組方式

a) $goods = D(“Goods”);

b) $ar = array(‘goods_id’=>100,‘goods_name’=>’lenovo手機’,’goods_price’=>1200);

c) $goods ->where(‘goods_id>50’)-> save($ar);

  1. AR方式

a) $goods = D(“Goods”);

b) $goods -> goods_id = 53;

c) $goods -> goods_name = “三星手機”;

d) $goods -> goods_price = 2000;

e) $goods -> where(‘goods_price>10000’)->save();

以上兩種方式如果可行,即要修改全部數據

以上sql語句從技術上可行,從業務上不可行(事故)

tp框架有智能考慮,以上情況的sql語句不被允許執行。

如何執行:

① 明確告訴系統那條sql語句被update更新

② 可以設置where進行sql語句更新操作

save() 方法返回值

0:之前沒有問題,執行前後數據沒有變化

自然數:受影響的記錄條數

false:執行失敗

數據修改具體實現:

通過路由給一個操作方法傳遞參數

http://網址/index.php/模塊/控制器/方法upd/變量名1/值/變量名2/值/變量名3/值

以上路由是通過get形式給指定的操作傳遞了三個參數信息

$_POST方式也可以

原則三個參數信息接收的時候通過$_GET接收即可

例如:$_GET[‘變量名1’];

以上參數信息接收太直白,不安全,需要按照框架規則使用下邊的方式接收get參數信息

http://網址/index.php/Admin/Goods/upd/name/tom/age/25/addr/beijing

function upd($name,$age,$addr){

$name;

$age;

$addr;

}

以上參數表述,如果在請求的時候沒有按照規則傳遞參數,那麽當前方法禁止訪問。

(除非參數有默認值)

修改商品信息步驟:

  1. 在“修改”按鈕處把被修改商品id信息通過get形式傳遞給upd操作
  2. 在upd方法裏邊制作形式參數$goods_id,接收服務器給傳遞的get變量goods_id
  3. 在修改表單裏邊制作隱藏域goods_id,避免tp框架禁止修改語句執行
  4. 在upd操作方法內部有兩個邏輯:展現表單、收集表單

【數據刪除及執行原生sql語句】

delete() 返回受影響的記錄條數

$goods -> delete(30); 刪除主鍵值等於30的記錄信息

$goods -> delete(“10,12,13”); 刪除主鍵值等於10 12 13的三條記錄

$goods -> where(“goods_id>60”)->delete() 把符合條件的記錄都給刪除

tp框架數據查詢,增刪改