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

Perl DBI 操作 MySQL 完整指南:連接、增刪改查與自增 ID 獲取

     編輯:MySQL 資料庫相關知識

前言

Perl 通過 DBI 模組統一資料庫介面,配合 DBD::mysql 驅動實現 MySQL 操作。本文涵蓋連接管理、無返回值操作、自增 ID 獲取、查詢結果遍歷四大核心場景。

一、連接與斷開

my $dbh = DBI->connect(
    "DBI:mysql:database=DBname;host=localhost",
    "user", "pwd",
    { RaiseError => 1 }  # 遇錯自動 die,省去手動檢查
);
# ... 業務邏輯 ...
$dbh->disconnect();

RaiseError => 1 讓異常即時拋出,避免靜默失敗。

二、INSERT/UPDATE/DELETE:無返回值操作

my $sth = $dbh->prepare(
    "INSERT INTO table_name (Name, region_id, inuse, url) 
     VALUES (?, ?, ?, ?)"
);
$sth->execute($r_name, $t+1, 1, $r_url);
  • 使用佔位符 ? 防止注入,自動處理引號轉義
  • prepare 一次解析,多次 execute 復用,批量寫入效能更高

三、獲取自增主鍵 ID

$sth->execute();  # 執行 INSERT 後
my $new_id = $dbh->{mysql_insertid};

MySQL 專屬屬性,僅在當前連接上下文有效。

四、SELECT 查詢與結果遍歷

my $sth = $dbh->prepare("SELECT col1, col2 FROM table_name WHERE ...");
$sth->execute();

while (my $row = $sth->fetchrow_arrayref) {
    printf "%s++%s\n", $row->[0], $row->[1];
}

常用獲取方式對比

方法返回值適用場景
fetchrow_arrayref數組引用 [$col1, $col2...]高效能,按索引取值
fetchrow_hashref哈希引用 {col1=>val, col2=>val}按列名取值,可讀性強
fetchall_arrayref二維數組引用 [[row1], [row2]...]小結果集一次性載入記憶體

最佳實踐提示

  1. 長運行程序使用 $dbh->ping 檢測連接存活,斷線重連
  2. 大量數據採用 prepare_cached 緩存語句句柄
  3. 異常處理用 eval { ... } 包裹,捕獲 $@
  4. 嚴禁在 SQL 字符串中直接插值變量,堅持佔位符
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved