:::

4-1 用PDO連線到資料庫

一、關於PHP的資料庫連線

  1. 填完表單送出後,就準備寫入資料庫了。
  2. 要寫入資料庫,必須先連上資料庫,PHP的MySQL連線方式有mysqlipdo兩種方式
    1. mysqli僅支援MySQL,但其語法和早期的mysql系列函數很像,所以,適合舊系統轉換,或者熟悉mysql系列函數者
    2. pdo則支援十幾種資料庫,因此,若有需要切換資料庫者,這是不二選擇,缺點是性能較mysqli差一點。

二、PDO的資料庫連線方式

  1. 基本連線方式範例:
    $dbhost = '資料庫位置'; //一般是 localhost或127.0.0.1
    $dbuser = '資料庫帳號'; //一般是 root
    $dbpasswd = '資料庫密碼';
    $dbname = '資料庫名稱';
    $dbcharacter = '連線編碼'; //一般是 utf8
    try
    {
        $db = new PDO("mysql:host={$dbhost};dbname={$dbname};charset={$dbcharacter}", $dbuser, $dbpasswd);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //禁用prepared statements的模擬效果
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //讓資料庫顯示錯誤原因
        echo "連線成功";
    } catch (PDOException $e) {
        die("無法連上資料庫:" . $e->getMessage());
    }
    

    最後會得到一個例化的 PDO 物件 $db,接著我們就可以用這個物件做任何操作。

  2. 關於禁用prepared statements的模擬效果的緣由可至「PHP 騙你,PDO prepare 並沒有準備好」這篇文章了解詳情
  3. 其中設定連線編碼請示實際情況而定,一般會是utf8,但我們建資料表時是使用utf8mb4,故必須設為utf8mb4

三、關閉連線

  1. 由於 PDO 是物件,只要將實例化的 PDO 物件指向 NULL,即釋放資源
    $db = NULL;

     

四、設定資料庫密碼

  1. 預設xampp的root是沒有密碼的,欲修改密碼,可以參考這篇:https://www.ucamc.com/e-learning/computer-skills/339-%E5%A6%82%E4%BD%95%E8%A8%AD%E5%AE%9Axampp%E4%BF%AE%E6%94%B9phpmyadmin%E7%9A%84mysql%E5%AF%86%E7%A2%BC
  2. 修改後,建議修改D:\xampp8\phpMyAdmin\config.inc.php,將18行的值改為http,如此,登入phpMyAdmin時就會詢問帳號密碼

五、建立admin/index.php後台處理程式

  1. 先建立admin/index.php,以便用來處理所有後台事務(新增、修改、刪除...等)
  2. 其內容為:
    <?php
    $dbhost = 'localhost'; //一般是 localhost 或 127.0.0.1
    $dbuser = 'root'; //一般是 root
    $dbpasswd = '12345';
    $dbname = 'blog';
    $dbcharacter = 'utf8mb4'; //一般是 utf8
    try
    {
        $db = new PDO("mysql:host={$dbhost};dbname={$dbname};charset={$dbcharacter}", $dbuser, $dbpasswd);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //禁用prepared statements的模擬效果
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //讓資料庫顯示錯誤原因
        echo "連線成功";
    } catch (PDOException $e) {
        die("無法連上資料庫:" . $e->getMessage());
    }
    

     

  3. 重整 admin/index.php,若看到連線成功就表示已經連到資料庫

:::

書籍目錄

展開 | 闔起

https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D52%26tbdsn%3D1798

計數器

今天: 4188418841884188
昨天: 5069506950695069
總計: 5134636513463651346365134636513463651346365134636