6-2
讓PHP7連線到MySQL資料庫
一、PHP常數設定
- 常數是一旦設定就不會變,和變數可以隨時指派其值不一樣。
- 常數可以直接在函數中使用
- 一般常數會以大寫前面加底線來辨識(實際上,不加底線或是用小寫也是可以)。
- 常數定義方式:
define('常數名稱', '對應值');
- index.php:
//常數設定
define('_DB_LOCATION', 'localhost');
define('_DB_ID', 'root');
define('_DB_PASS', '12345');
define('_DB_NAME', 'todo');
二、MySQL資料庫連線方法:
- https://www.php.net/manual/en/mysqli.quickstart.connections.php
- 示例
//實體化資料庫物件
$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");
-
指定欲連線的來源位置(一般為localhost),資料庫帳號、密碼及資料庫名稱。
- 若無錯誤訊息,表示連線成功。連線後,需設定用utf8編碼來擷取資料。
- 程式碼(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');