萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 連接 MySQL 標準寫法與常見錯誤排查

提供標準的 MySQL 連線程式碼,並針對經典錯誤 Call to undefined function mysql_connect() 給出三步驟解決方案。注意:mysql_* 函數已於 PHP 7.0 移除,新專案請改用 PDO/MySQLi。

傳統 mysql_connect() 寫法 (PHP 5.x)

<?php
$hostname = 'localhost';
$database = 'your_db_name';
$username = 'root';
$password = 'your_password';

$conn = mysql_pconnect($hostname, $username, $password)
    or trigger_error(mysql_error(), E_USER_ERROR);

mysql_select_db($database, $conn);
mysql_query('SET NAMES utf8', $conn); // 設定編碼
?>

引入方式

<?php require_once('Connections/conn.php'); ?>

錯誤:Call to undefined function mysql_connect()

原因:PHP 未載入 MySQL 擴展,或版本不匹配(PHP 7+ 已移除)。

  1. 複製 DLL (Windows):將 libmysql.dll、php5ts.dll 複製至 C:\Windows\System32 (或 PHP 目錄並加入 PATH)。
  2. 設定 extension_dir:extension_dir = "D:/php/ext" (指向擴展資料夾)。
  3. 啟用擴展:編輯 php.ini,移除 ;extension=php_mysql.dll 前的分號。PHP 7+ 需安裝 php-mysqlnd 並啟用 extension=pdo_mysql、extension=mysqli。
  4. 重啟 Web Server 使設定生效。

現代推薦寫法 (PDO)

<?php
$dsn = 'mysql:host=localhost;dbname=your_db;charset=utf8mb4';
$opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, 'username', 'password', $opt);
// 使用 $pdo->prepare() / $pdo->query()
?>

關鍵差異提醒

  • mysql_pconnect() 持久連線,PHP-FPM 模式下可能導致連線洩漏,建議改用普通 mysql_connect() 或 PDO。
  • 永遠指定 charset=utf8mb4 支援完整 Unicode (含 Emoji)。
  • 錯誤模式設為 Exception 便於統一捕獲處理。
copyright © 萬盛學電腦網 all rights reserved