首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP 腳本特點與 MySQL 交互基礎:嵌入式 Web 開發入門

     編輯:MySQL 資料庫相關知識

PHP 腳本運行模式

  • 模塊模式: Apache 載入 mod_php,性能最佳(Unix/Linux)
  • CGI/FastCGI: 獨立進程,Windows 常用,亦可用於 Nginx + PHP-FPM

文件擴展名:.php、.php3、.phtml,需在 Apache AddType 配置識別。

環境假設

  • PHP + Apache + MySQL C 客戶端庫 + 頭文件
  • 樣例數據庫:sampdb(學分保存、歷史同盟表)
  • 本文基於 PHP 3/4 通用語法,PHP 5/7/8 語法兼容但功能更豐富

核心 MySQL 操作函數速查

注意: 老式 mysql_* 函數已棄用(PHP 7 移除),請使用 mysqli_* 或 PDO。

典型交互流程範例

<?php
// config.php - 集中配置
$host = 'localhost';
$user = 'webapp';
$pass = 'secret';
$db   = 'sampdb';

// connect.php - 連接封裝
function db_connect() {
    global $host, $user, $pass, $db;
    $conn = mysqli_connect($host, $user, $pass, $db);
    if (!$conn) {
        error_log("MySQL connect failed: " . mysqli_connect_error());
        die("系統繁忙,請稍後再試");
    }
    mysqli_set_charset($conn, 'utf8mb4');
    return $conn;
}

// list_members.php - 列表頁
require 'connect.php';
$conn = db_connect();

$sql = "SELECT id, last_name, first_name, email FROM member ORDER BY last_name";
$res = mysqli_query($conn, $sql);
if (!$res) {
    error_log("Query failed: " . mysqli_error($conn));
    die("查詢失敗");
}

echo "<table border=1><tr><th>ID</th><th>姓</th><th>名</th><th>郵箱</th></tr>";
while ($row = mysqli_fetch_assoc($res)) {
    echo "<tr>";
    echo "<td>" . htmlspecialchars($row['id']) . "</td>";
    echo "<td>" . htmlspecialchars($row['last_name']) . "</td>";
    echo "<td>" . htmlspecialchars($row['first_name']) . "</td>";
    echo "<td>" . htmlspecialchars($row['email']) . "</td>";
    echo "</tr>";
}
echo "</table>";

mysqli_free_result($res);
mysqli_close($conn);
?>

安全關鍵點

  1. 預處理語句: mysqli_prepare() + bind_param() 徹底防注入
  2. 輸出轉義: htmlspecialchars() 防 XSS
  3. 錯誤不外露: 生產環境關閉 display_errors,記錄 error_log
  4. 最小權限: Web 賬號僅擁有業務必需的增刪改查權限

PHP 4 → 5/7/8 遷移提示

  • 對象模型重寫(傳值→傳引用)
  • 新增 mysqli 擴展、PDO 抽象層
  • register_globals 默認關閉,超全局變量 $_GET/$_POST
  • 異常處理 try/catch
  • 類型聲明、標量/返回類型提示(PHP 7+)

總結

PHP 作為為 Web 設計的模板語言,與 MySQL 天然契合。現代開發請採用 PDO 或 mysqli 預處理語句、Composer 管理依賴、框架分層,將數據庫交互封裝於 Repository/DAO 層,實現關注點分離與可測試性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函數用途
mysqli_connect() / mysql_connect()建立連接(推薦 mysqli/PDO)
mysqli_select_db()選擇默認數據庫
mysqli_query()執行 SQL
mysqli_fetch_assoc/array/row()獲取結果行
mysqli_num_rows()結果集行數
mysqli_affected_rows()影響行數
mysqli_insert_id()自增 ID
mysqli_real_escape_string()轉義防注入
mysqli_close()關閉連接
mysqli_error() / mysqli_errno()錯誤信息/代碼