1、數據庫配置
一、在應用目錄或者模塊目錄下面的database.php中添加下面的配置參數:php
return [ // 數據庫類型 'type' => 'mysql', // 數據庫鏈接DSN配置 'dsn' => '', // 服務器地址 'hostname' => '127.0.0.1', // 數據庫名 'database' => 'thinkphp', // 數據庫用戶名 'username' => 'root', // 數據庫密碼 'password' => '', // 數據庫鏈接端口 'hostport' => '', // 數據庫鏈接參數 'params' => [], // 數據庫編碼默認採用utf8 'charset' => 'utf8', // 數據庫表前綴 'prefix' => 'think_', // 數據庫調試模式 'debug' => false, // 數據庫部署方式:0 集中式(單一服務器),1 分佈式(主從服務器) 'deploy' => 0, // 數據庫讀寫是否分離 主從式有效 'rw_separate' => false, // 讀寫分離後 主服務器數量 'master_num' => 1, // 指定從服務器序號 'slave_no' => '', // 是否嚴格檢查字段是否存在 'fields_strict' => true, ];
二、方法中配置(字符串配置、數組配置):mysql
2.1 字符串配置
Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8'); 數據庫類型://用戶名:密碼@數據庫地址:數據庫端口/數據庫名#字符集
2.2 數組配置
Db::connect([
//數據庫類型
'type' => 'mysql',
//服務器地址
'hostname' => '127.0.0.1',
//數據庫名
'database' => 'thinkphp',
//數據庫名
'username' => 'root',
//數據庫密碼
'password' => 'root',
//數據庫表前綴
'prefix' => 'think_',
]);
2、基本查詢sql
一、query(查詢操做)execute(寫入操做) 原生態SQL語句 增刪改查thinkphp
Db::execute("insert into t_test(username,password) values('小明','111111')"); Db::execute("update t_test set username ='55' where id = '10'"); Db::query('select * from t_test where id = 5'); Db::execute('delete from t_test where id = 6');
二、 參數綁定 命名佔位符綁定數據庫
支持參數綁定:
Db::query('select * from think_user where id=?',[8]); Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']); 支持佔位符綁定: Db::query('select * from think_user where id=:id',['id'=>8]); Db::execute('insert into think_user (id, name) values (:id, :name)',['id'=>8,'name'=>'thinkphp']);
3、查詢構造器 數組
【在thinkPHP5.0.9以後,db('表名') 助手函數默認再也不強制從新鏈接,這樣大大的縮減了每次使用時重連數據庫的操做時間,更加方便】ruby
【在數據庫配置中配置了表前綴的狀況下(假定表前綴是think_ ,表名爲think_user),Db::table('think_user') 、Db::name('user') 跟 db('user')是同樣的】服務器
【在數據庫配置中沒有配置表前綴的狀況下(假定表名爲think_user),Db::table('think_user')、Db::name('think_user') 跟 db('user') 是同樣的】分佈式
一、查詢數據:
(1)查詢一個數據使用:函數
// table方法必須指定完整的數據表名 Db::table('think_user')->where('id',1)->find(); //find 方法查詢結果不存在,返回 null,存在則返回一條一維數組
(2)查詢數據集
Db::table('think_user')->where('status',1)->select(); select 方法查詢結果不存在,返回空數組,存在則返回二維數組集合
若是設置了數據表前綴參數的話,可使用
Db::name('user')->where('id',1)->find(); Db::name('user')->where('status',1)->select();
若是你的數據表沒有使用表前綴功能,那麼name和table方法的同樣的效果。
(3)助手函數
系統提供了一個db助手函數,能夠更方便的查詢:
db('user')->where('id',1)->find(); db('user')->where('status',1)->select();
二、添加數據:
(1)添加一條數據
$data = ['foo' => 'bar', 'bar' => 'foo']; Db::table('think_user')->insert($data);
//insert 方法添加成功,返回值是影響記錄的行數
Db::table('think_user')->insertGetId($data);
//insertGetId 方法添加成功,返回插入數據的自增id值
(2)添加多條數據
$data = [
['foo' => 'bar', 'bar' => 'foo'], ['foo' => 'bar1', 'bar' => 'foo1'], ['foo' => 'bar2', 'bar' => 'foo2'] ]; Db::name('user')->insertAll($data); //insertAll 方法添加數據成功,返回影響記錄的行數
(3)助手函數
// 添加單條數據 db('user')->insert($data); // 添加多條數據 db('user')->insertAll($list);
三、更新數據:
【更新時必須帶有條件,不然會報錯,若是想所有更新,則能夠在where條件中寫上恆等式「1=1」】
【更新方法的返回值,都是影響記錄的行數,若是更新先後保持不變,則返回0,更新失敗返回的則是false】
(1)更新數據表中的數據
Db::table('think_user') ->where('id', 1) ->update(['name' => 'thinkphp']);
(2)助手函數
// 更新數據表中的數據 db('user')->where('id',1)->update(['name' => 'thinkphp']); // 更新某個字段的值 db('user')->where('id',1)->setField('name','thinkphp');
//setField 方法,僅用於更新某一個字段 // 自增 score 字段 db('user')->where('id', 1)->setInc('score');
//setInc 方法,參數1:是要自增的字段名,參數2[可省略],默認爲1,是每次自增的數目,特別書用於網站點擊量啥的 // 自減 score 字段 db('user')->where('id', 1)->setDec('score');
//setDec 方法,參數1:是要自減的字段名,參數2[可省略],默認爲1,是每次自減的數目,特別適用於商品庫存啥的
四、刪除數據
(1)刪除數據表中
【刪除時必須帶有條件,不然會報錯,若是想所有更新,則能夠在where條件中寫上恆等式「1=1」】
【返回值爲影響的行數】
// 根據主鍵刪除
Db::table(‘think_user’)->delete(1);
Db::table(‘think_user’)->delete([1,2,3]);
// 條件刪除
Db::table(‘think_user’)->where(‘id’,1)->delete();
Db::table(‘think_user’)->where(‘id’,’<’,10)->delete();
(2)助手函數
//根據主鍵刪除 db('user')->delete(1); //條件刪除 db('user')->where('id',1)->delete();
5、查詢方法
一、條件查詢方法
(1)where 方法
// 可使用where方法進行and條件查詢
Db::table('think_user') ->where('name','like','%thinkphp') ->where('status',1) ->find();
//多個字段相同條件的and查詢優化,用'&'符號連接多個字段
Db::table('think_user') ->where('name&title','like','%thinkphp') ->find();
//多個字段相同條件的or查詢優化,用'|'符號連接多個字段
Db::table('think_user') ->where('name|title','like','%thinkphp') ->find();
(2)whereOr 方法
// 使用whereOr 方法進行OR關係查詢,通常whereOr 方法根where 方法在一塊兒使用
Db::table('think_user') ->where('id','>','10') ->whereOr('title','like','%thinkphp') ->find();
二、條件查詢方法
//where方法和whereOr方法在複雜的查詢條件中常常須要配合一塊兒混合使用,下面舉個例子:
$result = Db::table('think_user')->where(function ($query) { $query->where('id', 1)->whereor('id', 2); })->whereOr(function ($query) { $query->where('name', 'like', 'think')->whereOr('name', 'like', 'thinkphp'); })->select();
三、getTableInfo 方法
//使用getTableInfo能夠獲取表信息,信息類型 包括 fields,type,bind,pk,以數組的形式展現,能夠指定某個信息進行獲取
// 獲取`think_user`表全部信息 Db::getTableInfo('think_user'); // 獲取`think_user`表全部字段 Db::getTableInfo('think_user', 'fields'); // 獲取`think_user`表全部字段的類型 Db::getTableInfo('think_user', 'type'); // 獲取`think_user`表的主鍵 Db::getTableInfo('think_user', 'pk');