| 維度 | MySQL 原生擴展 (mysql_*) | ODBC 抽象層 (odbc_*) |
|---|---|---|
| 依賴 | libmysqlclient | unixODBC + MySQL ODBC Driver |
| 性能 | 直連,開銷最小 | 多一層轉換,略高延遲 |
| 功能覆蓋 | MySQL 專屬特性全支持 | 標準 SQL 功能,高級特性受限 |
| 可移植性 | 綁定 MySQL | 理論支持任意 ODBC 數據源 |
| 維護狀態 | PHP 7.0+ 已移除,改用 mysqli/PDO | 持續維護,跨數據庫遷移利器 |
mysql_connect() / mysql_pconnect()(持久連接)mysql_close()、mysql_select_db()mysql_query()、mysql_db_query()、mysql_unbuffered_query()mysql_fetch_array()、mysql_fetch_assoc()、mysql_fetch_row()、mysql_fetch_object()mysql_data_seek()、mysql_row_seek()mysql_num_rows()、mysql_num_fields()、mysql_fetch_field()、mysql_field_*() 系列mysql_free_result()mysql_affected_rows()、mysql_insert_id()、mysql_errno()、mysql_error()mysql_list_dbs()、mysql_list_tables()、mysql_list_fields()odbc_connect() / odbc_pconnect()、odbc_close()、odbc_close_all()odbc_exec()、odbc_do()odbc_prepare() + odbc_execute()odbc_fetch_row()、odbc_fetch_into()、odbc_result()、odbc_result_all()(直接輸出 HTML 表格)odbc_num_rows()、odbc_num_fields()、odbc_field_name()、odbc_field_type()、odbc_field_len()odbc_free_result()odbc_autocommit()、odbc_commit()、odbc_rollback()odbc_setoption()、odbc_cursor()、odbc_longreadlen()、odbc_binmode()mysql_* 已棄用。unixODBC、MySQL Connector/ODBC/etc/odbcinst.ini 註冊驅動,/etc/odbc.ini 配置 DSN--with-unixODBC,啟用 extension=odbc從 mysql_* 遷移到 mysqli/PDO 核心差異:預處理語句(prepare()/bind_param())、面向對象風格、異常處理、多語句執行(multi_query())。建議配合靜態分析工具(Psalm/PHPStan)批量重構。