在 PHP 開發中,mysqli 擴展是連接 MySQL 資料庫的主流方式之一。本文將透過完整的程式碼範例,示範如何建立連線、執行查詢、處理結果集,並正確關閉連線。
mysqli_connect() 函式接受四個主要參數:主機位址、使用者名稱、密碼與預設資料庫名稱。以下為標準連線範例:
<?php
$link = mysqli_connect(
'localhost', // MySQL 主機位址
'jian', // 登入使用者名稱
'123456', // 登入密碼
'jian' // 預設資料庫名稱
);
if (!$link) {
printf("無法連線到 MySQL 伺服器. 錯誤代碼: %s ", mysqli_connect_error());
exit;
} else {
echo '資料庫連線成功!';
}
// 關閉連線
mysqli_close($link);
?>
說明: 此處的 jian 同時是資料庫名稱與帳號名稱。實務上,專案通常只提供特定資料庫的管理帳號、密碼與主機位址,而非 root 權限。
連線成功後,可使用 mysqli_query() 執行 SQL 語句,並透過 mysqli_fetch_assoc() 逐行取得關聯式陣列結果。
<?php
$link = mysqli_connect('localhost', 'jian', '123456', 'jian');
if (!$link) {
printf("連線失敗: %s", mysqli_connect_error());
exit;
}
echo '資料庫連線成功!<br/>';
$sql = 'SELECT id, class, scores FROM jian_scores WHERE scores > 60';
if ($result = mysqli_query($link, $sql)) {
echo 'ID 班級 分數<br/>';
while ($row = mysqli_fetch_assoc($result)) {
echo $row['id'] . ' ' . $row['class'] . ' ' . $row['scores'] . '<br/>';
}
// 釋放結果集記憶體
mysqli_free_result($result);
}
mysqli_close($link);
?>
文章作者提到修改 my.ini 編碼為 UTF-8 後 MySQL 無法啟動,改回 GBK 才正常。這通常是因為舊版資料檔案編碼不一致,或是 character-set-server 設定與實際資料編碼衝突。建議:
character-set-server=utf8mb4ALTER DATABASE 與 ALTER TABLE 轉換程式執行後將顯示分數大於 60 的學生資料:
