2024 日本 PHP 研討會

PDO::getAttribute

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDO::getAttribute 取得資料庫連線屬性

說明

public PDO::getAttribute(int $attribute): mixed

這個函式會傳回資料庫連線屬性的值。要擷取 PDOStatement 屬性,請參考 PDOStatement::getAttribute()

請注意,某些資料庫/驅動程式組合可能不支援所有資料庫連線屬性。

參數

attribute

PDO::ATTR_* 常數之一。適用於資料庫連線的通用屬性如下:

  • PDO::ATTR_AUTOCOMMIT
  • PDO::ATTR_CASE
  • PDO::ATTR_CLIENT_VERSION
  • PDO::ATTR_CONNECTION_STATUS
  • PDO::ATTR_DRIVER_NAME
  • PDO::ATTR_ERRMODE
  • PDO::ATTR_ORACLE_NULLS
  • PDO::ATTR_PERSISTENT
  • PDO::ATTR_PREFETCH
  • PDO::ATTR_SERVER_INFO
  • PDO::ATTR_SERVER_VERSION
  • PDO::ATTR_TIMEOUT

某些驅動程式可能會使用額外的驅動程式特定屬性。請注意,驅動程式特定屬性*不得*與其他驅動程式一起使用。

傳回值

呼叫成功會傳回所要求的 PDO 屬性值。呼叫失敗則傳回 null

錯誤/例外

當底層驅動程式不支援所要求的 attribute 時,PDO::getAttribute() 可能會丟出 PDOException

範例

範例 #1 擷取資料庫連線屬性

<?php
$conn
= new PDO('odbc:sample', 'db2inst1', 'ibmdb2');
$attributes = array(
"AUTOCOMMIT", "ERRMODE", "CASE", "CLIENT_VERSION", "CONNECTION_STATUS",
"ORACLE_NULLS", "PERSISTENT", "PREFETCH", "SERVER_INFO", "SERVER_VERSION",
"TIMEOUT"
);

foreach (
$attributes as $val) {
echo
"PDO::ATTR_$val: ";
echo
$conn->getAttribute(constant("PDO::ATTR_$val")) . "\n";
}
?>

參見

新增筆記

使用者貢獻的筆記 2 則筆記

Phil Hilton
6 年前
能更優雅地處理不支援屬性的範例

<?php

$conn
= new PDO( 'odbc:sample', 'db2inst1', 'ibmdb2' );
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$attributes = array(
"AUTOCOMMIT", "ERRMODE", "CASE", "CLIENT_VERSION", "CONNECTION_STATUS",
"ORACLE_NULLS", "PERSISTENT", "PREFETCH", "SERVER_INFO", "SERVER_VERSION",
"TIMEOUT"
);

foreach (
$attributes as $val ) {
echo
"PDO::ATTR_$val: ";
try {
echo
$conn->getAttribute( constant( "PDO::ATTR_$val" ) ) . "\n";
} catch (
PDOException $e ) {
echo
$e->getMessage() . "\n";
}
}

?>
Robert Parham
9 年前
Oracle 沒有以下屬性

PDO::ATTR_CONNECTION_STATUS: SQLSTATE[IM001]: 驅動程式不支援此函式:驅動程式不支援該屬性
PDO::ATTR_PREFETCH: SQLSTATE[IM001]: 驅動程式不支援此函式:驅動程式不支援該屬性
PDO::ATTR_TIMEOUT: SQLSTATE[IM001]: 驅動程式不支援此函式:驅動程式不支援該屬性

其餘的都可以正常運作。
To Top