tp框架數據查詢,增刪改
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範圍的記錄信息
- find()如果我們查詢的結果只有一個信息,使用select()會返回一個二維數組
為了使用方便我們會希望返回一個一維數組,這時候可使用find()方法
- having()方法設置查詢條件,where()設置查詢條件
6. 相關聚合函數 count() sum() avg() max() min()
以上聚合函數是最後被調用的方法
以上方法可以結合具體條件方法使用
例如:$goods -> where(‘goods_price >1000’)->count(); 大於1000元的商品的總數目
【數據添加】
add() 該方法返回被添加的新記錄的主鍵id值
兩種方式實現數據添加
- 數組方式數據添加
$goods = D(“Goods”);
$arr = array(‘goods_name’=>’iphone5s’,’goods_weight’=>’109’);
//註意:goods_name和goods_weight是數據表中字段名稱
$goods -> add($arr);
- 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值返回
【收集表單數據入庫操作】
- 制作一個表單
- 通過$_POST收集信息
- 通過create()方法實現數據收集,該方法對於非法的字段會自動進行過濾
註意:一個add控制器實現兩個邏輯,一個是打出添加頁面,一個是向數據庫添加內容
註意:如果是主鍵值重復,這種錯誤會導致error()方法不跳轉頁面直接拋出錯誤信息,這是新版本問題,如果想要跳轉,找到
【數據修改操作】
save() 實現數據修改,返回受影響的記錄條數
具體有兩種方式實現數據修改,與添加類似(數組、AR方式)
- 數組方式
a) $goods = D(“Goods”);
b) $ar = array(‘goods_id’=>100,‘goods_name’=>’lenovo手機’,’goods_price’=>1200);
c) $goods ->where(‘goods_id>50’)-> save($ar);
- 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;
}
以上參數表述,如果在請求的時候沒有按照規則傳遞參數,那麽當前方法禁止訪問。
(除非參數有默認值)
修改商品信息步驟:
- 在“修改”按鈕處把被修改商品id信息通過get形式傳遞給upd操作
- 在upd方法裏邊制作形式參數$goods_id,接收服務器給傳遞的get變量goods_id
- 在修改表單裏邊制作隱藏域goods_id,避免tp框架禁止修改語句執行
- 在upd操作方法內部有兩個邏輯:展現表單、收集表單
【數據刪除及執行原生sql語句】
delete() 返回受影響的記錄條數
$goods -> delete(30); 刪除主鍵值等於30的記錄信息
$goods -> delete(“10,12,13”); 刪除主鍵值等於10 12 13的三條記錄
$goods -> where(“goods_id>60”)->delete() 把符合條件的記錄都給刪除
tp框架數據查詢,增刪改