PHP 8.4.24 Released!

PDO::getAttribute

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

PDO::getAttribute Получает атрибут соединения с базой данных

Описание

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

Метод возвращает значение атрибута соединения с базой данных. Атрибуты объекта PDOStatement получают методом PDOStatement::getAttribute().

Обратите внимание, что не каждая комбинация «база данных/драйвер» поддерживает все атрибуты соединения с базой данных.

Список параметров

attribute

Константа семейства PDO::ATTR_*. Список общих атрибутов для применения к подключениям к базе данных:

  • PDO::ATTR_CASE
  • PDO::ATTR_DEFAULT_FETCH_MODE
  • PDO::ATTR_DRIVER_NAME
  • PDO::ATTR_ERRMODE
  • PDO::ATTR_ORACLE_NULLS
  • PDO::ATTR_PERSISTENT
  • PDO::ATTR_STATEMENT_CLASS
  • PDO::ATTR_STRINGIFY_FETCHES

Отдельные драйверы поддерживают дополнительные специфичные для драйвера атрибуты. Обратите внимание: специфичные для конкретного драйвера атрибуты нельзя применять с другими драйверами.

Возвращаемые значения

При успешном вызове метод возвращает значение PDO-атрибута иначе возвращается null.

Ошибки

Метод PDO::getAttribute() выбрасывает исключение PDOException, если базовый драйвер не поддерживает атрибут, который запросили в аргументе attribute.

Список изменений

Версия Описание
8.4.0 Метод теперь поддерживает получение значения атрибута PDO::ATTR_STRINGIFY_FETCHES.

Примеры

Пример #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 notes

up
5
Phil Hilton
8 years ago
Better example that handles unsupported attributes gracefully:

<?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";
    }
}

?>
up
0
Robert Parham
10 years ago
Oracle does not have the following attributes:

PDO::ATTR_CONNECTION_STATUS: SQLSTATE[IM001]: Driver does not support this function: driver does not support that attribute
PDO::ATTR_PREFETCH: SQLSTATE[IM001]: Driver does not support this function: driver does not support that attribute
PDO::ATTR_TIMEOUT: SQLSTATE[IM001]: Driver does not support this function: driver does not support that attribute

The rest work fine.
To Top