1. 程式人生 > 實用技巧 >Laravel入坑指南(4)——資料庫(Mysql)

Laravel入坑指南(4)——資料庫(Mysql)

來來來,新的一節出爐了。這一節大家一起了解,Laravel如何對Mysql進行CURD。

我們回顧一下,PHP操作Mysql無非就是通過五個要素:host(地址)、username(使用者名稱)、password(密碼)、database(資料庫名)和charset(字符集),就可以連線並操作資料庫了。所以,Laravel也逃不出這個套路,我們需要了解的也就只有配置檔案和CURD的方法。

1、配置檔案

Laravel關於資料庫的配置檔案是放在/config/database.php中,在這個檔案中有一個mysql配置節,如下所示:

大家會發現,在這裡就有剛剛提到的連線資料庫五個要素。同時,大家也會發現,這五個要素,都是env()函式的返回值。那env()從哪裡讀出這些值呢?這又要提到第一講裡面的.env檔案。在專案根目錄下有個/.env,裡面有一堆配置,env()函式就是從這個檔案中讀取相應的值返回,如果讀不到,才返回第二個引數。相關的配置如下:

2、操作前的準備

現在假設test資料庫中,有一張名為course的表,結構如下:

其中uid為主鏈

3、查:返回陣列,每個元素都是stdClass

1) 普通查詢

use Illuminate\Support\Facades\DB;

$course=DB::select("SELECT * FROM course");
foreach ($course as $val)
{
    echo $val->uid,$val->cname,$val->teacher,'<br />';
}

2) 引數繫結

$course=DB::select("SELECT * FROM course WHERE uid=? AND cname=?",[1,'php']);
foreach ($course as $val) { echo $val->uid,$val->cname,$val->teacher,'<br />'; }

3) 命名引數繫結

$course=DB::select("SELECT * FROM course WHERE uid=:uid AND cname=:cname",["uid"=>1,"cname"=>'php']);
foreach ($course as $val)
{
    echo $val->uid,$val->cname,$val->teacher,'<br />';
}

建議:引數傳遞時,用(命名)引數繫結的方式,有利於防止sql注入攻擊

4、刪查改:

//新增成功返回true,插入失敗丟擲異常(比如主鍵衝突)
$rtl=DB::insert('INSERT INTO course (uid,cname,num,teacher) values (?, ?, ?,?)', [1,'python', 5, 'ckb']);

//返回刪除的行數
$rtl=DB::delete("DELETE FROM course WHERE uid>=2");

 //返回被更新的行數,失敗丟擲異常(比如主鍵主衝)
$rtl=DB::update("UPDATE course SET 
                           teacher='abc' 
                           WHERE uid=3");

建議:這三個操作,在引數傳遞時,也可以用(命名)引數繫結,並用也建議使用(命名)引數繫結

5、無需返回值執行sql語句

DB::statement("DROP TABLE course");

實際上,上述所有CURD的語句,都可以用statement執行。這個函式,執行成功返回true,執行失敗丟擲異常

6、事務

1) 函式形態

DB::transaction(function () {
    //這裡進行CURD
    //如果想要回滾,可直接丟擲異常
});

2) 手動宣告

try
{
    DB::beginTransaction();
    //進行CURD
    //如果想要回滾,丟擲異常
    DB::rollBack();
}
catch(Exception $e)
{
    DB::rollBack();    //接住異常,在這裡回滾
}

到這裡,Laravel的CURD介紹完了,我們可以很好地對資料庫進行操作了。關於Laravel的資料庫話題,還有查詢構造器和Eloquent模型,在之後的話題中會進行敘述,感興趣的同學可以先檢視官網文件。

大家下期見:)

--------------------------- 我是可愛的分割線 ----------------------------

最後博主借地宣傳一下,漳州程式設計小組招新了,這是一個面向漳州青少年資訊學/軟體設計的學習小組,有意向的同學點選連結,聯絡我吧。