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

PHP MySQL 擴展函數完整速查手冊:25 個核心函數分類詳解與現代化遷移建議

     編輯:MySQL 資料庫相關知識

⚠️ 重要前提

mysql_* 函數自 PHP 5.5 棄用,PHP 7.0 移除。 新專案請使用 mysqli 或 PDO_MySQL。本文僅供維護老專案參考。

五大分類 25 核心函數

1. 連線管理(4 個)

函數用途現代替代
mysql_connect()短連線mysqli_connect() / new PDO()
mysql_pconnect()長連線(連線池)mysqli_pconnect() / PDO ATTR_PERSISTENT
mysql_close()關閉短連線mysqli_close() / PDO=null
mysql_select_db()選擇資料庫mysqli_select_db() / DSN 指定

2. 查詢執行(3 個)

函數用途現代替代
mysql_query()執行 SQL,返回資源/布爾mysqli_query() / PDO::query()/exec()
mysql_db_query()指定庫執行(不推薦)先 select_db 再 query
mysql_unbuffered_query()不緩衝結果集(大結果集)mysqli_query(..., MYSQLI_USE_RESULT)

3. 結果集獲取(7 個)

函數返回類型現代替代
mysql_result()單值(效能最差)棄用,改用 fetch_*
mysql_fetch_row()數值索引陣列mysqli_fetch_row()
mysql_fetch_array()雙模式(MYSQL_ASSOC/NUM/BOTH)mysqli_fetch_array()
mysql_fetch_assoc()關聯陣列mysqli_fetch_assoc()
mysql_fetch_object()物件mysqli_fetch_object()
mysql_fetch_lengths()各欄位長度陣列mysqli_fetch_lengths()
mysql_num_rows()SELECT 行數mysqli_num_rows()

4. 寫入影響統計(2 個)

函數用途現代替代
mysql_affected_rows()INSERT/UPDATE/DELETE 影響行數mysqli_affected_rows()
mysql_insert_id()最後 AUTO_INCREMENT 值mysqli_insert_id()

5. 元資料與清單(9 個)

函數用途現代替代
mysql_list_dbs()資料庫列表mysqli_query('SHOW DATABASES')
mysql_db_name()從列表資源取庫名直接 fetch 陣列
mysql_list_tables()表列表SHOW TABLES
mysql_tablename()從列表資源取表名直接 fetch 陣列
mysql_list_fields()欄位列表資源SHOW COLUMNS / DESC
mysql_num_fields()欄位數mysqli_num_fields()
mysql_fetch_field()欄位物件(12 屬性)mysqli_fetch_field()
mysql_field_flags()欄位旗標mysqli_fetch_field()->flags
mysql_field_len()欄位最大長度mysqli_fetch_field()->length

欄位物件 12 屬性速查

name, table, max_length, not_null, primary_key, unique_key,
multiple_key, numeric, blob, type, unsigned, zerofill

遷移對照速查表

舊寫法mysqli 寫法PDO 寫法
mysql_connect('h','u','p')mysqli_connect('h','u','p','db')new PDO('mysql:host=h;dbname=db','u','p')
mysql_query($sql)$mysqli->query($sql)$pdo->query($sql)
mysql_fetch_array($res, MYSQL_ASSOC)$res->fetch_assoc()$stmt->fetch(PDO::FETCH_ASSOC)
mysql_real_escape_string($v)$mysqli->real_escape_string($v)預處理參數綁定(無需轉義)
mysql_insert_id()$mysqli->insert_id$pdo->lastInsertId()

預處理語句範例(mysqli / PDO 核心優勢)

// mysqli
$stmt = $mysqli->prepare('SELECT * FROM users WHERE id > ? AND status = ?');
$stmt->bind_param('is', $minId, $status);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) { ... }

// PDO
$stmt = $pdo->prepare('SELECT * FROM users WHERE id > :min AND status = :st');
$stmt->execute(['min' => $minId, 'st' => $status]);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ... }
預處理 = **SQL 注入免疫** + **執行計畫複用** + **二進位協議更快**。這是遷移的核心動力。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved