ThinkPHP數據庫處理:
1.MySQL的數據庫連接
首先配置database.php文件
使用{dump(config('database));}來查看數據庫的配置項
使用 {$res = Db::connect(); dump($res);}來查看數據庫的連接信息
我們可以在{Db::connect()}中來配置數據庫的連接,具體的方法為:
{
Db::connect([
// 數據庫類型
'type' => 'mysql',
// 服務器地址
'hostname' => '127.0.0.1',
// 數據庫名
'database' => 'habbit',
// 用戶名
'username' => 'root',
// 密碼
'password' => 'root',
// 端口
'hostport' => '3306',
// 連接dsn
'dsn' => '',
// 數據庫連接參數
'params' => [],
// 數據庫編碼默認采用utf8
'charset' => 'utf8',
]);
}
2.數據庫的查詢
3.數據庫的插入
insert方法:
Db::name('表名(如果配置前綴名,可以省略)') -> insert([
"鍵" => "值"
]);
insert方法返回的是影響記錄的行數
#insertGetId方法:
Db::name('表名(如果配置前綴名,可以省略)') -> insertGetId([
"鍵" => "值"
]);
insertGetId方法返回的是插入數據的自增id
#insertAll方法(可以一次插入多個數組):
Db::name('表名(如果配置前綴名,可以省略)') -> insertAll(數據);
insertAll方法返回的是插入成功的行數
4.數據的更新
#update方法:
Db::name('表名(如果配置前綴名,可以省略)') -> where(條件) -> update([
"鍵" => "值"
]);
返回的是被影響的行數。
#setField方法:
Db::name('表名(如果配置前綴名,可以省略)') -> where(條件) -> setField("鍵","值");
#setInc方法:
Db::name('表名(如果配置前綴名,可以省略)') -> where(條件) ->setInc("鍵",數值);
返回值為被影響行數,如果方法中不傳數值即{setInc("鍵")},則每次執行,鍵對應的value會自增一,如果有數值,則每次自增數值
#setDec方法:
Db::name('表名(如果配置前綴名,可以省略)') -> where(條件) ->setDec("鍵",數值);
和setInc方法相反,setDec為自減。
5.數據的刪除:
Db::name('表名(如果配置前綴名,可以省略)') -> where(條件) ->delete();
返回值為被影響行數
Db::name('表名(如果配置前綴名,可以省略)') -> delete("主鍵");
6.條件構造器
語法:
{where("id","","")} //字符串
{where([])} //數組
{where("id","EXP","in [1,2,3]")} //不會重構sql語句
EQ =
NEQ <> 不等於
LT <
ELT <=
GT >
EGT >=
BETWEEN BETWEEN * AND * 在*和*之間
NOTBETWEEN NOTBETWEEN * AND * 不在*和*之間
IN IN(*,*) 是*中的一個
NOTIN NOTIN(*,*) 不是*中的一個
whereOr方法:
{where(條件1)->whereOr(條件2)} //滿足條件1或條件2
7.使用model層來封裝方法:
#查詢:
get(主鍵);//查詢到對應主鍵的數據
all(function($query){
$query -> where(條件);
});
Model::where(條件)->select();
Model::where(條件)->value(字段名);//返回一個字符串
#添加:
Model::creat(數據);//插入數據,返回值為model對象
Model::creat(數據,true);//忽略數據庫中沒有的字段插入
Model::creat(數據,['字段1','字段2',...]);//只允許插入對應字段的數據
model->save();//使用save方法時必須實例化model,返回值為影響行數
model->allowField(true)->save(數據);//插入數據時忽略數據庫中沒有的字段
model->allowField(['字段1','字段2',...])->save(數據);//只允許插入對應字段的數據
model->saveAll(數據);//使用saveALl方法時必須實例化model,可以批量添加數據,返回值為model對象
其中添加的數據為一個二維數組:
$data = [
[第一條],
[第二條],
[第三條],
.
.
.
];
#更新數據:
Model::update(數組);//修改數據,如果有主鍵值(自增id),則不需要傳遞條件(不建議使用)
update(
"id" => 1,
"name" => "123"
);
update(數組,function($query){
$query->where(條件);
});//帶有條件的數據更新
Model::where(條件)->update(數組);//更新特定的數據(建議使用)
Model->save(["username"=>"123"],function($query){
$query->where(條件);
});//將符合條件的username改為123(建議使用)
Model->saveAll(數組);//可以用來批量更新,其中傳遞的數組為二維數組,對應一組數據,其中的一維數組,對應一條數據(不建議使用)
{
$data = [
['id'=>1,'username'=>'123'],
['id'=>2,'username'=>'1234'],
['id'=>3,'username'=>'12345'],
.
.
.
];
}//批量修改id等於1,2,3的usernam
#刪除:
destroy(主鍵);//刪除對應主鍵的數據
destroy(['id'=>1]);//刪除id=1的數據
destroy(function($query){
$query-where(條件);
})
Model::where(條件)->delete();
擴展{
limit(5)//輸出5條
limit(5,5)//從第5條開始取5條
page(3,5)//第三頁的5條數據 用於分頁
group()//分組方法
order()//排序方法 DESC--倒序排序
}