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

PHP 連接 MySQL 兩大方式對比:原生 MySQL 擴展 vs ODBC 抽象層

     編輯:MySQL 資料庫相關知識

方式一:原生 MySQL 擴展(推薦)

直接呼叫 mysql_* 函數族,效能最高、功能最全、社群支援最佳。

核心函數速查

分類代表函數
連線管理mysql_connect、mysql_pconnect、mysql_close
資料庫操作mysql_select_db、mysql_query、mysql_db_query
結果集處理mysql_fetch_array、mysql_fetch_assoc、mysql_fetch_row、mysql_fetch_object、mysql_num_rows、mysql_free_result
錯誤處理mysql_errno、mysql_error
欄位中繼資料mysql_field_name、mysql_field_type、mysql_field_len、mysql_field_flags
事務控制mysql_query("BEGIN")、mysql_query("COMMIT")、mysql_query("ROLLBACK")

方式二:ODBC 函數(需安裝 MyODBC 驅動)

適用於**多資料庫抽象層**需求,但效能較低、功能受限於 ODBC 規範。

核心函數

  • 連線:odbc_connect、odbc_pconnect、odbc_close
  • 執行:odbc_exec、odbc_prepare+odbc_execute、odbc_do
  • 結果:odbc_fetch_row、odbc_fetch_into、odbc_result、odbc_result_all(直接輸出 HTML 表格)
  • 事務:odbc_commit、odbc_rollback、odbc_autocommit

實戰範例:原生 MySQL 擴展寫入留言表


$conn = mysql_connect('localhost:3306', 'root', '');
mysql_select_db('HBWEB');
$sql = "INSERT INTO usemsg (name, usermail, userurl, sitename, company, phone)
        VALUES ('$name', '$usermail', '$userurl', '$sitename', '$company', '$phone')";
$result = mysql_query($sql);
if (mysql_error()) {
  echo "錯誤: " . mysql_error();
} else {
  echo "成功入庫";
}

表結構


CREATE TABLE usemsg (
  name VARCHAR(255) NOT NULL DEFAULT 'notname',
  usermail VARCHAR(255) NOT NULL DEFAULT 'notusermail',
  userurl VARCHAR(255) NOT NULL DEFAULT 'notuserurl',
  sitename VARCHAR(255) NOT NULL DEFAULT 'notsitename',
  company VARCHAR(255) NOT NULL DEFAULT 'notcompany',
  phone VARCHAR(255) NOT NULL DEFAULT 'notphone'
);

選型建議

  • **純 MySQL 專案**:**強烈建議原生擴展**(或現代 mysqli/PDO_MySQL),效能與功能雙贏。
  • **異構資料庫抽象**:ODBC 或 PDO(支援多驅動)為架構選擇。
  • **舊專案維護**:mysql_* 已棄用(PHP 7.0 移除),新專案請直接使用 mysqli(物件導向/程序雙介面)或 PDO。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved