thinkPHP資料庫的增刪改查操作

不言
發布: 2023-03-30 13:44:01
原創
2906 人瀏覽過

這篇文章主要介紹了thinkPHP資料庫增刪改查操作方法,結合實例形式詳細分析了thinkPHP常用資料庫操作函數與相關使用技巧,需要的朋友可以參考下

本文實例講述了thinkPHP資料庫增刪改查操作方法。分享給大家供大家參考,具體如下:

thinkphp對資料庫增刪改查進行了封裝操作,使得使用更加方便,但是不一定靈活。

可以用封裝的用,需要寫sql,可以執行sql。

1.原始的

$Model = new Model(); // 实例化一个model对象 没有对应任何数据表
$insert_sql = "INSERT INTO sh_wxuser_collection (user_id,store_id,good_id,addtime) VALUES('".$user_id."','".$store_id."','".$good_id."','".$addtime."');";
$Model - >query($insert_sql);
登入後複製

2.針對表格實例化的,這裡的表原名是sh_wxuser_collection。 sh是前綴。

$model = M('wxuser_collection'); //自动省去sh
$insert_sql = "INSERT INTO __TABLE__ (user_id,store_id,good_id,addtime) VALUES('".$user_id."','".$store_id."','".$good_id."','".$addtime."');";
$model - >query($insert_sql);
登入後複製

另一種寫法,_可以寫成大寫,它會自動轉換成_

$model = M('WxuserCollection'); //自动省去sh
$insert_sql = "INSERT INTO __TABLE__ (user_id,store_id,good_id,addtime) VALUES('".$user_id."','".$store_id."','".$good_id."','".$addtime."');";
$model - >query($insert_sql);
登入後複製

#3. 封裝的add語句

$model = M('WxuserCollection');
$data = array('user_id' = >$user_id, 'store_id' = >$store_id, 'good_id' = >$good_id, 'addtime' = >$addtime);
$model - >data($data) - >add();
登入後複製

4.封裝的修改edit語句

#
$model = M('WxuserCollection');
$data = array('user_id' = >$user_id, 'store_id' = >$store_id, 'good_id' = >$good_id, 'addtime' = >$addtime);
$model - >data($data) - >where('id=3') - >save();
登入後複製

確實挺方便的,但是方便之餘,別忘了原始的sql,原汁原味的sql,才最有意思。

5.find()

$model = M('WxuserCollection');
$res1 = $model - >find(1);
$res2 = $model - >find(2);
$res3 = $model - >where('good_id=1105 AND store_id = 1 AND user_id = 20') - >find();
登入後複製

find取得一條數據,find(1)取得id為1的數據,find(2)取得id為2的數據。最後一個是取得條件為where的中的第一個資料。

5.select()

$model = M('WxuserCollection');
$res = $model - >where('good_id=1105 AND store_id = 1 AND user_id = 20') - >field('id,good_id as good') - >select();
登入後複製

取得所有資料。這裡的好處就是,不用考慮sql語句的順序了,隨心所欲呼叫函數就可以了。

6.delete()

$model = M('WxuserCollection');
$res = $model - >where('id=1') - >delete(); // 成功返回1 失败返回0
登入後複製

根據條件進行刪除動作

7.field()

$model = M('WxuserCollection');
$res = $model - >field('id,good_id as good') - >select();
$res = $model - >field(array('id', 'good_id' = >'good')) - >select();
$res = $model - >field('id', true) - >select();
登入後複製

字串,陣列兩種方式,第三個是表示獲取處理id之外的所有字段。

8.order()

$model = M('WxuserCollection');
$res = $model - >order('id desc') - >select();
$res = $model - >order('id asc') - >select();
$res = $model - >order(array('id' = >'desc')) - >select();
$res = $model - >order(array('id')) - >select();
登入後複製

字串,陣列兩種方式,預設asc。

9.join()

$Model->join(' work ON artist.id = work.artist_id')->join('card ON artist.card_id = card.id')->select();
$Model->join('RIGHT JOIN work ON artist.id = work.artist_id')->select();
$Model->join(array(' work ON artist.id = work.artist_id','card ON artist.card_id = card.id'))->select();
登入後複製

預設採用LEFT JOIN 方式,如果需要用其他的JOIN方式,可以改成第二種,

如果join方法的參數用陣列的話,只能使用一次join方法,並且不能和字串方式混合使用。

10.setInc()

#10.setInc()

$User = M("User"); // 实例化User对象
$User->where('id=5')->setInc('score',3); // 用户的积分加3
$User->where('id=5')->setInc('score'); // 用户的积分加1
$User->where('id=5')->setDec('score',5); // 用户的积分减5
$User->where('id=5')->setDec('score'); // 用户的积分减1
登入後複製

11.getField()

#取得某個欄位值

$User = M("User"); // 实例化User对象
// 获取ID为3的用户的昵称
$nickname = $User->where('id=3')->getField('nickname');
登入後複製
傳回的nickname是一個字串結果。也就是說,即使有滿足條件的多個字段,也只會傳回一個結果。

取得某個欄位列

如果希望傳回符合要求的欄位列(多個結果),可以使用:

$User = M("User"); // 实例化User对象
// 获取status为1的用户的昵称列表
$nickname = $User->where('status=1')->getField('nickname',true);
登入後複製

第二個參數傳入了true,傳回的nickname則是數組,包含了所有滿足條件的暱稱列表。

如果需要限制回傳結果數量,可以使用:

$nickname = $User->where('status=1')->getField('nickname',8);
登入後複製

來取得2個欄位清單

$User = M("User"); // 实例化User对象
 // 获取status为1的用户的昵称列表
$nickname = $User->where('status=1')->getField('id,nickname');
登入後複製
如果getField方法傳入多個欄位名稱的話,預設會傳回一個關聯數組,以第一個欄位的值為索引(所以第一個欄位要盡量選擇不會重複的)。

取得多個欄位清單

#

$result = $User->where('status=1')->getField('id,account,nickname');
登入後複製
如果傳入了2個以上的欄位名,則傳回一個二維數組(類似select方法的傳回值,差異在於索引是二維數組的鍵名是第一個欄位的值)

綜合使用案例

$where = array('a.store_id' => $this->store_id, 'a.user_id' => $this->user_id);
$collects = $this->collectModel->table("sh_wxuser_collection a")->field(array('b.name','b.price','b.oprice','b.logoimg','a.goods_id'))->limit($start, $offset)->order('a.addtime DESC')->where($where)->join(' sh_goods b ON a.goods_id = b.id')->select();// 获取当前页的记录
echo M()->getLastSql(); // 调试sql语句用
$count = $this->collectModel->table("sh_wxuser_collection a")->where($where)->count(); // 获取总的记录数
登入後複製

這裡由於結合了兩張表,所以用到了table方法,重新定義表名,對應的條件和參數都要加上前綴。 a. 或b.

其中field字段要不是字串,就是陣列。

field('b.name', 'b.price', 'b.oprice', 'b.logoimg', 'a.goods_id') // 错误
登入後複製

我之前就這麼寫,問題大大的。

使用框架,就不能靈活的寫sql了。不過對sql有一個深刻的認識,也有利於靈活的使用好框架。

用來偵錯sql語句的方法。

echo M()->getLastSql();
登入後複製

很方便。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:

PHP上傳Excel檔案匯入資料到MySQL資料庫

thinkphp3.2.3版本的資料庫增刪改查實作程式碼

thinkPHP5實作資料庫新增內容的方法

############ ##

以上是thinkPHP資料庫的增刪改查操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板