:::

6-2 讓PHP7連線到MySQL資料庫

一、PHP常數設定

  1. 常數是一旦設定就不會變,和變數可以隨時指派其值不一樣。
  2. 常數可以直接在函數中使用
  3. 一般常數會以大寫前面加底線來辨識(實際上,不加底線或是用小寫也是可以)。
  4. 常數定義方式:
    define('常數名稱', '對應值');

     

  5. index.php:
    //常數設定
    define('_DB_LOCATION', 'localhost');
    define('_DB_ID', 'root');
    define('_DB_PASS', '12345');
    define('_DB_NAME', 'todo');

     

二、MySQL資料庫連線方法:

  1. https://www.php.net/manual/en/mysqli.quickstart.connections.php
  2. 示例
    //實體化資料庫物件
    $mysqli = new mysqli(_DB_LOCATION, _DB_ID, _DB_PASS, _DB_NAME);
    if ($mysqli->connect_error) {
        throw new Exception('無法連上資料庫:' . $mysqli->connect_error);
    }
    $mysqli->set_charset("utf8");

     

  3. 指定欲連線的來源位置(一般為localhost),資料庫帳號、密碼及資料庫名稱。

  4. 若無錯誤訊息,表示連線成功。連線後,需設定用utf8編碼來擷取資料。
  5. 程式碼(index.php)
    <?php
    //常數設定
    define('_DB_LOCATION', 'localhost');
    define('_DB_ID', 'root');
    define('_DB_PASS', '12345');
    define('_DB_NAME', 'todo');
    
    // 引入Smarty
    require_once 'smarty/libs/Smarty.class.php';
    
    // 創建Smarty物件
    $smarty = new Smarty;
    //實體化資料庫物件
    $mysqli = new mysqli(_DB_LOCATION, _DB_ID, _DB_PASS, _DB_NAME);
    if ($mysqli->connect_error) {
        throw new Exception('無法連上資料庫:' . $mysqli->connect_error);
    }
    $mysqli->set_charset("utf8");
    // die(var_dump($mysqli));
    
    // 一般變數
    $title  = '待辦清單';
    $header = '我的待辦清單';
    $smarty->assign('title', $title);
    $smarty->assign('header', $header);
    
    // 一維陣列
    $navbar = ['home' => "回首頁", 'post' => "發布待辦事項"];
    $smarty->assign('navbar', $navbar);
    
    // 二維陣列
    $content = array(
        "1" => array('directions' => "撰寫程式", 'end' => "2020/06/08"), //用逗號結尾
        "2" => array('directions' => "開會", 'end' => "2020/06/10"),
    );
    $smarty->assign('content', $content);
    // 輸出到樣板檔
    $smarty->display('index.tpl');