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

PHP odbc_connect() 函數完整指南:連接 ODBC 資料源

     編輯:PHP 相關知識

前言

odbc_connect() 允許 PHP 透過 ODBC (Open Database Connectivity) 介面連接各種資料庫 (Access, SQL Server, Oracle, DB2 等),實現跨平台資料存取。

基本語法

resource odbc_connect(string $dsn, string $user, string $password [, int $cursor_type ])
  • $dsn:資料源名稱 (在系統 ODBC 管理員設定)
  • $user:資料庫用戶名
  • $password:密碼
  • $cursor_type (選用):游標類型 (SQL_CUR_USE_ODBC 等)

基本連線範例

<?php
$db_user = 'dbuser';
$db_pass = 'dbpass';
$dsn = 'my_odbc_dsn'; // 須先在控制台建立系統 DSN

$conn = odbc_connect($dsn, $db_user, $db_pass);
if ($conn) {
  echo "成功連接到 ODBC 資料源
";
} else {
  echo "連接失敗!
";
}

// 執行查詢
$sql = "SELECT * FROM usertable";
$result = odbc_exec($conn, $sql);

// 輸出 HTML 表格
echo "<table border='1'><tr><th>ID</th><th>Name</th><th>Address</th></tr>";
while (odbc_fetch_row($result)) {
  echo "<tr>";
  echo "<td>" . odbc_result($result, 1) . "</td>";
  echo "<td>" . odbc_result($result, 2) . "</td>";
  echo "<td>" . odbc_result($result, 3) . "</td>";
  echo "</tr>";
}
echo "</table>";

// 釋放資源
odbc_free_result($result);
odbc_close($conn);
?>

持久連線:odbc_pconnect()

<?php
$db_host = 'server.mynetwork';
$db_user = 'dbuser';
$db_pass = 'dbpass';
$dsn = 'remote_dsn';

$conn = odbc_pconnect($dsn, $db_user, $db_pass);
if ($conn) {
  echo "持久連線開啟成功
";
}

// 嘗試關閉 (持久連線通常無法關閉)
if (odbc_close($conn)) {
  echo "關閉成功 (罕見)
";
} else {
  echo "無法關閉持久連線 (正常)
";
}
?>

常用 ODBC 函數速查表

函數用途
odbc_exec()執行 SQL 語句
odbc_prepare() / odbc_execute()預處理語句 (防注入)
odbc_fetch_row()取得下一列
odbc_result()取得欄位值 (索引或名稱)
odbc_fetch_array()取得關聯+數值陣列
odbc_fetch_object()取得物件
odbc_num_rows()取得列數 (部分驅動不支援)
odbc_num_fields()取得欄位數
odbc_field_name()取得欄位名稱
odbc_free_result()釋放結果集記憶體
odbc_close() / odbc_close_all()關閉連線
odbc_commit() / odbc_rollback()交易控制
odbc_autocommit()設定自動提交
odbc_columns()取得資料表欄位資訊
odbc_columnprivileges()取得欄位權限
odbc_tables()列出資料表
odbc_primarykeys()取得主鍵資訊
odbc_foreignkeys()取得外鍵資訊
odbc_procedures()列出預存程序
odbc_procedurecolumns()取得預存程序參數

進階:錯誤處理與除錯

<?php
$conn = @odbc_connect($dsn, $user, $pass);
if (!$conn) {
  // 取得詳細錯誤訊息
  $err = odbc_errormsg();
  die("ODBC 連線失敗: $err");
}

$result = @odbc_exec($conn, $sql);
if (!$result) {
  $err = odbc_errormsg($conn);
  die("查詢失敗: $err");
}
?>

Windows 設定 ODBC DSN 步驟

  1. 控制台 → 系統管理工具 → ODBC 資料來源 (32位元/64位元)
  2. 選「系統 DSN」分頁 → 新增
  3. 選擇驅動程式 (SQL Server, Access, Oracle 等)
  4. 輸入資料源名稱 (DSN)、描述、伺服器、資料庫
  5. 測試連線 → 完成
  6. PHP 程式中使用此 DSN 名稱

注意事項

  • PHP 需啟用 php_odbc.dll 擴充功能
  • 64 位元 PHP 需搭配 64 位元 ODBC 驅動程式
  • 部分驅動不支援 odbc_num_rows(),改用 SELECT COUNT(*)
  • 長時間執行腳本建議設定 odbc_setoption() 調整逾時
  • 生產環境建議使用連線池或持久連線減少開銷

現代替代方案

針對特定資料庫,建議使用原生驅動:

  • SQL Server: PDO_SQLSRV / sqlsrv
  • Oracle: PDO_OCI / oci8
  • PostgreSQL: PDO_PGSQL / pgsql
  • Access: 可透過 ODBC 或 PDO_ODBC
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved