首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 連接 MySQL 並顯示資料:入門完整教學

     編輯:PHP 相關知識

學習目標

  • 掌握 PHP 連接 MySQL 的基本流程
  • 執行 SELECT 查詢並處理結果集
  • 理解 mysql_fetch_array() 的三種模式
  • 正確處理錯誤與關閉連線

完整程式碼範例 (使用 MySQLi 物件導向風格)

<?php
// 設定資料庫連線參數
$host = 'localhost';
$user = 'root';
$pass = 'your_password';
$db   = 'test';

// 1. 建立連線
$mysqli = new mysqli($host, $user, $pass, $db);
if ($mysqli->connect_errno) {
    die('連線失敗: ' . $mysqli->connect_error);
}

// 2. 設定字元集 (重要!避免中文亂碼)
$mysqli->set_charset('utf8mb4');

// 3. 執行查詢
$sql = 'SELECT UserId, UserName, Gender FROM users';
$result = $mysqli->query($sql);
if (!$result) {
    die('查詢錯誤: ' . $mysqli->error . ' | SQL: ' . $sql);
}

// 4. 取得筆數
$numRows = $result->num_rows;
echo "查詢成功,共 $numRows 筆資料。
"; // 5. 逐筆處理結果集 (關聯陣列模式) while ($row = $result->fetch_assoc()) { echo "ID: {$row['UserId']} | 姓名: {$row['UserName']} | 性別: {$row['Gender']}
"; } // 6. 釋放結果集記憶體 $result->free(); // 7. 關閉連線 $mysqli->close(); ?>

結果集處理三種模式對照

方法回傳結構適用場景
fetch_assoc()關聯陣列 ['欄位名' => 值]最常用,語意清晰
fetch_row()數值索引陣列 [0 => 值, 1 => 值]效能略高,欄位順序固定時
fetch_array(MYSQLI_BOTH)同時包含關聯與數值索引相容舊代碼,記憶體佔用較大

常見錯誤與解決方案

中文顯示亂碼
確認:資料表欄位 CHARSET=utf8mb4、連線 set_charset('utf8mb4')、HTML 頁面 <meta charset="utf-8"> 三者一致。
Call to undefined function mysql_connect()
PHP 7+ 移除 mysql_*,請改用 mysqli 或 PDO。
查詢無結果但不報錯
$result->num_rows === 0 為正常狀況,請用 if ($numRows === 0) 判斷空結果。
SQL 語法錯誤
輸出 $mysqli->error 並檢查欄位名、表名拼寫;善用 printf("SQL: %s", $sql) 除錯。

進階:預處理語句 (防注入)

$stmt = $mysqli->prepare('SELECT UserId, UserName FROM users WHERE Gender = ? AND age > ?');
$stmt->bind_param('si', $gender, $age); // s=字串, i=整數
$gender = 'M'; $age = 18;
$stmt->execute();
$res = $stmt->get_result();
while ($row = $res->fetch_assoc()) { /* ... */ }
$stmt->close();

總結

掌握「連線 → 設定編碼 → 查詢 → 迴圈處理 → 釋放資源 → 關閉連線」標準流程,並養成使用預處理語句的習慣,即可安全高效地從 MySQL 讀取資料並呈現在網頁上。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved