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

Perl 連接 MySQL 實戰:DBI/DBD::mysql 安裝與 CRUD 範例

     編輯:MySQL 資料庫相關知識

完整記錄 Windows 下 ActiveState Perl 環境安裝 DBI 與 DBD::mysql 模組、建立測試資料庫/資料表、Perl 腳本實現資料插入與條件查詢的全流程。

模組安裝步驟

  1. DBI:下載 DBI.zip,解壓至暫存目錄,DOS 視窗執行 ppm install DBI.ppd(若失敗,切換至 perl/bin 目錄執行)。
  2. DBD::mysql:下載 DBD-MySQL.zip,同樣用 ppm 安裝。

測試資料庫準備

mysql> CREATE DATABASE mydata;
mysql> USE mydata;
mysql> CREATE TABLE address (
  id INT(5) NOT NULL,
  name VARCHAR(40) NOT NULL,
  email VARCHAR(50) NOT NULL,
  telephone INT(12) NULL
);
mysql> INSERT INTO address VALUES (1, 'Nighthawk', 'nighthawk@163.net', 92384092);

Perl 完整範例程式

use DBI;

# 連接資料庫
my $dbh = DBI->connect('DBI:mysql:mydata') or die "無法連接: " . DBI->errstr;

# 準備插入語句(佔位符防注入)
my $sth = $dbh->prepare(q{
  INSERT INTO address (id, name, email, telephone) VALUES (?, ?, ?, ?)
});

print "輸入記錄 (id,name,email,tel 逗號分隔),Enter 結束:\n";
while ($inputdata = <>) {
  chomp $inputdata;
  last unless $inputdata;
  my ($id, $name, $email, $tel) = split(/,/, $inputdata);
  $sth->execute($id, $name, $email, $tel);
}
# $dbh->commit;  # 若關閉 AutoCommit

# 依姓名查詢 Email 與電話
$sth = $dbh->prepare('SELECT * FROM address WHERE name = ?') or die $dbh->errstr;
print "請輸入姓名查詢,Enter 結束:\n";
while ($inputname = <>) {
  chomp $inputname;
  last unless $inputname;
  $sth->execute($inputname) or die "錯誤: " . $sth->errstr;
  while (my @data = $sth->fetchrow_array()) {
    print "Email: $data[2]  Telephone: $data[3]\n";
  }
}

$dbh->disconnect;

關鍵技術點

  • 使用 prepare + 佔位符 ? 防止 SQL 注入,提升重複執行效能。
  • fetchrow_array 逐列取得陣列,索引 0 對應 id、1 對應 name 等。
  • 錯誤處理採 or die $dbh->errstr 模式,即時捕獲連線/執行異常。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved