在使用 PDO 進行資料庫操作時,bindColumn() 方法能將結果集的特定欄位直接綁定到 PHP 變量,避免每次迴圈中手動賦值,程式碼更簡潔高效。本文透過實際範例示範如何使用位置索引與欄位名稱兩種方式綁定欄位。
首先建立 PDO 連接並啟用例外錯誤模式:
<?php
try {
$dbh = new PDO('mysql:dbname=testdb;host=localhost', 'mysql_user', 'mysql_pwd');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo '資料庫連接失敗:' . $e->getMessage();
exit;
}
// 查詢 D01 部門的人員資訊
$query = "SELECT uid, name, phone, email FROM contactInfo WHERE departmentId='D01'";
bindColumn() 支援兩種綁定方式:
$stmt->bindColumn(1, $uid);$stmt->bindColumn('phone', $phone);try {
$stmt = $dbh->prepare($query);
$stmt->execute();
// 位置綁定
$stmt->bindColumn(1, $uid);
$stmt->bindColumn(2, $name);
// 欄位名稱綁定
$stmt->bindColumn('phone', $phone);
$stmt->bindColumn('email', $email);
// 使用 FETCH_BOUND 模式遍歷,欄位值會自動賦給對應變量
while ($stmt->fetch(PDO::FETCH_BOUND)) {
echo $uid . "\t" . $name . "\t" . $phone . "\t" . $email . "\n";
}
} catch (PDOException $e) {
echo $e->getMessage();
}
fetch() 時自動更新,無需手動從陣列取值掌握 bindColumn 能讓 PDO 操作更符合物件導向思維,減少中間陣列轉換的效能開銷。