雖然 PHP 7+ 已移除 mysql_* 擴展(建議改用 mysqli 或 PDO),但大量存量專案仍在使用。本文系統整理 40+ 核心函數分類、語法、回傳值與實務範例。
| 類別 | 代表函數 |
|---|---|
| 連線管理 | mysql_connect、mysql_pconnect、mysql_close、mysql_select_db |
| 查詢執行 | mysql_query、mysql_db_query、mysql_unbuffered_query |
| 結果集遍歷 | mysql_fetch_array、mysql_fetch_row、mysql_fetch_assoc、mysql_fetch_object、mysql_fetch_field |
| 結果集指標 | mysql_data_seek、mysql_field_seek、mysql_num_rows、mysql_num_fields |
| 欄位中繼資料 | mysql_field_name、mysql_field_type、mysql_field_len、mysql_field_flags、mysql_field_table |
| 資源釋放 | mysql_free_result |
| 錯誤診斷 | mysql_errno、mysql_error |
| DDL 操作 | mysql_create_db、mysql_drop_db、mysql_list_dbs、mysql_list_tables、mysql_list_fields |
| 其他 | mysql_affected_rows、mysql_insert_id、mysql_tablename、mysql_stat、mysql_thread_id |
resource mysql_connect(string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]])
// 參數可省略:預設 localhost、PHP 進程擁有者、空密碼
// 成功回傳連線資源,失敗回傳 false
resource|bool mysql_query(string $query [, resource $link_identifier])
// SELECT/SHOW/EXPLAIN/DESCRIBE 回傳結果集資源
// INSERT/UPDATE/DELETE/DROP 回傳 true/false
array mysql_fetch_array(resource $result [, int $result_type])
// $result_type: MYSQL_ASSOC、MYSQL_NUM、MYSQL_BOTH(預設)
// 同時提供數字索引與關聯索引
int mysql_affected_rows([resource $link_identifier])
// 回傳前一條 INSERT/UPDATE/DELETE 影響的行數
// DELETE 無 WHERE 時回傳 0(MySQL 優化特性)
// SELECT 不適用,請用 mysql_num_rows()
<?php
mysql_connect("localhost", "user", "pass");
mysql_select_db("mydb");
$sql = "INSERT INTO t (c) VALUES ('test')";
if (!mysql_query($sql)) {
die("Error " . mysql_errno() . ": " . mysql_error());
}
?>
<?php
$dbh = mysql_connect('localhost:3306', 'user', 'pass');
mysql_select_db('admreqs', $dbh);
$query = "INSERT INTO requests (date, request, email, priority, status)
VALUES (NOW(), '$desc', '$email', '$priority', 'NEW')";
$res = mysql_query($query, $dbh);
$query = "SELECT MAX(id) FROM requests";
$res = mysql_query($query, $dbh);
$row = mysql_fetch_row($res);
echo "您的申請編號: " . $row[0];
mysql_close($dbh);
?>
mysqli(程序式/物件雙介面)或 PDO(資料庫抽象層)mysqlnd 驅動獲得效能提升掌握經典函數庫用法,兼顧存量維護與新架構演進。