進階

PDO 資料庫連線

以 PDO 連線 school,對 dept 完成查詢、新增、更新、刪除(CRUD)。

PDO 與 dept 資料表 CRUD

【學習段落】
  • 第一部分:設定 $dsn,以 new PDO() 建立連線。
  • 第二部分:撰寫 SELECT,以 query()fetchAll(PDO::FETCH_ASSOC) 讀取 dept
  • 第三部分:新增資料(Create)— INSERTexec()
  • 第四部分:更新資料(Update)— UPDATEexec()
  • 第五部分:刪除資料(Delete)— DELETE 後再查詢確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
<?php
//第一部分:資料庫連線
    $dsn = "mysql:host=localhost;charset=utf8;dbname=school";
    //$data sourse name 資料來源="使用的資料庫:提供服務的主機=本機;編碼=通用萬國碼;資料庫名=$";
    $pdo = new PDO($dsn,'root','');
    //核心變數 連線機器人 = 新執行 設計圖($dsn,'帳號','密碼');
//第二部分:查詢資料 (Read)
    $sql = " select * from  `dept`";
    //資料庫(以指令內容生出來的)="選擇全部直欄 從 `資料表`
    $depts = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    //A -> B,去執行 A物件 的 B功能 或 抓取 A物件 的 B屬性
    //$pdo->query($sql) ➔ 【發射並帶回成果包】
    //拿取全部->fetchAll()
    //PDO::FETCH_ASSOC 直接翻閱 PDO 總部字典裡的 FETCH_ASSOC 條目

    echo "<pre>";
    print_r($depts);
    echo "</pre>";
//第三部分:新增資料 (Create)
    $sql_insert="insert into`dept`(`code`,`name`)
                                        values('601','中餐科')";
    echo "<h2>新增資料</h2>";
    echo $sql_insert;
    echo "<hr>";
    //$pdo->exec($sql_insert);重整就會新增一筆 所以關掉
    //要從資料庫「撈資料、看畫面」 ➔ 用 query()
    //要對資料庫「新增、修改、刪除」 ➔ 用 exec()
//第四部分:更新資料 (Update)
    echo "<h2>更新資料</h2>";

    $sql_update="update `dept`
                 set `code`='602',`name`='西餐科'
                 where `id`='8'";
    $pdo->exec($sql_update);
    echo $sql_update;
    echo "<hr>";

//第五部分:刪除資料 (Delete)
    $depts=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    echo "<pre>";
    print_r($depts);
    echo "</pre>";
    echo "<h2>刪除資料</h2>";
    $sql_delete= "delete from `dept` where `id`='2'";
    $pdo->exec($sql_delete);
    echo $sql_delete;
    echo "<hr>";
    $depts=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    echo "<pre>";
    print_r($depts);
    echo "</pre>";
?>
Array
(
    [0] => Array
        (
            [id] => 1
            [code] => 401
            [name] => 商業經營科
        )

    [1] => Array
        (
            [id] => 2
            [code] => 402
            [name] => 國際貿易科
        )

    [2] => Array
        (
            [id] => 3
            [code] => 404
            [name] => 資料處理科
        )

    [3] => Array
        (
            [id] => 4
            [code] => 503
            [name] => 幼兒保育科
        )

    [4] => Array
        (
            [id] => 5
            [code] => 504
            [name] => 美容科
        )

    [5] => Array
        (
            [id] => 6
            [code] => 506
            [name] => 室內佈置科
        )

)

新增資料

insert into`dept`(`code`,`name`) values('601','中餐科')

更新資料

update `dept` set `code`='602',`name`='西餐科' where `id`='8'
Array
(
    [0] => Array
        (
            [id] => 1
            [code] => 401
            [name] => 商業經營科
        )

    [1] => Array
        (
            [id] => 2
            [code] => 402
            [name] => 國際貿易科
        )

    [2] => Array
        (
            [id] => 3
            [code] => 404
            [name] => 資料處理科
        )

    [3] => Array
        (
            [id] => 4
            [code] => 503
            [name] => 幼兒保育科
        )

    [4] => Array
        (
            [id] => 5
            [code] => 504
            [name] => 美容科
        )

    [5] => Array
        (
            [id] => 6
            [code] => 506
            [name] => 室內佈置科
        )

)

刪除資料

delete from `dept` where `id`='2'
Array
(
    [0] => Array
        (
            [id] => 1
            [code] => 401
            [name] => 商業經營科
        )

    [1] => Array
        (
            [id] => 3
            [code] => 404
            [name] => 資料處理科
        )

    [2] => Array
        (
            [id] => 4
            [code] => 503
            [name] => 幼兒保育科
        )

    [3] => Array
        (
            [id] => 5
            [code] => 504
            [name] => 美容科
        )

    [4] => Array
        (
            [id] => 6
            [code] => 506
            [name] => 室內佈置科
        )

)

【學習重點】

  • $dsn:資料來源名稱,指定主機、編碼與資料庫名(範例為 school)。
  • $pdo:new PDO($dsn, 帳號, 密碼) 建立連線物件。
  • 查詢:$pdo->query($sql) 執行 SQL;fetchAll(PDO::FETCH_ASSOC) 以關聯陣列取回全部列。
  • 輸出:print_r() 搭配 <pre> 檢視查詢結果。
  • query / exec:查資料、看畫面用 query();新增、修改、刪除用 exec()