本文整理 MySQL PHP 擴展 (mysql_* 函數族) 核心 20 個函數的用法、參數與回傳值,供開發快速查閱。注意: 此擴展已於 PHP 5.5.0 棄用,PHP 7.0.0 移除,新專案請改用 mysqli 或 PDO_MySQL。
| 函數 | 說明 |
|---|---|
mysql_affected_rows([link_id]) | 回傳最近 INSERT/UPDATE/DELETE/REPLACE 影響的列數;SELECT 回傳選取列數。錯誤回傳 -1。 |
mysql_close([link_id]) | 關閉指定連線。忽略 mysql_pconnect 建立的持久連線。成功回傳 true。 |
mysql_connect(host[:port], user, pass) | 建立非持久連線。參數皆可省略 (預設 localhost、PHP 進程擁有者、空密碼)。 |
mysql_create_db(db_name [, link_id]) | 建立資料庫。建議改用 mysql_query("CREATE DATABASE ...")。 |
mysql_drop_db(db_name [, link_id]) | 刪除資料庫。不可復原,謹慎使用。建議改用 mysql_query("DROP DATABASE ...")。 |
mysql_select_db(db_name [, link_id]) | 選擇預設資料庫。(原文未列出但為核心函數) |
| 函數 | 說明 |
|---|---|
mysql_query(query [, link_id]) | 執行 SQL 查詢。SELECT 回傳結果資源;其他回傳 true/false。 |
mysql_db_query(db_name, query [, link_id]) | 執行查詢前先切換資料庫。等同 mysql_select_db + mysql_query。 |
mysql_errno([link_id]) | 回傳最近一次 MySQL 操作的錯誤代碼 (0 表無錯誤)。 |
mysql_error([link_id]) | 回傳最近一次 MySQL 操作的錯誤訊息字串 (空字串表無錯誤)。 |
| 函數 | 回傳型態 | 索引方式 | 適用場景 |
|---|---|---|---|
mysql_fetch_row(result) | 數值索引陣列 | $row[0], $row[1]... | 效能最佳,不需欄位名 |
mysql_fetch_assoc(result) | 關聯陣列 | $row['col'] | 只需欄位名,可讀性佳 |
mysql_fetch_array(result [, type]) | 混合陣列 | 同時支援數值與關聯索引 | 需同時兩種存取方式 |
mysql_fetch_object(result [, type]) | 物件 | $obj->col | 物件導向風格 |
type 參數常數:MYSQL_NUM、MYSQL_ASSOC、MYSQL_BOTH (預設)。
| 函數 | 說明 |
|---|---|
mysql_data_seek(result, row_num) | 移動結果指標到指定列 (0 起算)。 |
mysql_num_rows(result) | 回傳結果集總列數。 |
mysql_num_fields(result) | 回傳結果集欄位數。 |
mysql_fetch_field(result [, field_offset]) | 回傳欄位中繼資料物件 (name, table, type, len, flags...)。 |
mysql_fetch_lengths(result) | 回傳上一列各欄位長度陣列。 |
mysql_field_name(result, field_index) | 回傳指定欄位名稱。 |
mysql_field_table(result, field_index) | 回傳指定欄位所屬資料表名稱。 |
mysql_field_type(result, field_index) | 回傳指定欄位資料型別名稱。 |
mysql_field_flags(result, field_index) | 回傳欄位旗標字串 (如 not_null, primary_key, auto_increment)。 |
mysql_field_len(result, field_index) | 回傳欄位最大長度。 |
mysql_field_seek(result, field_offset) | 設定下次 mysql_fetch_field 的起始位置。 |
mysql_fetch_array/assoc 若 JOIN 產生同名欄位,後者會覆蓋前者。解法:使用別名 (AS) 或改用數值索引。mysql_free_result() 釋放記憶體。mysql_real_escape_string() (PHP 4.3.0+) 處理,或改用 Prepared Statements (mysqli/PDO)。