phpday 2022

PDO::getAttribute

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

PDO::getAttributeBir veritabanı bağlantı özniteliğinin değerini döndürür

Açıklama

public PDO::getAttribute(int $öznitelik): mixed

Bir veritabanı bağlantı özniteliğinin değerini döndürür.

Bazı veritabanı/sürücü çiftlerinin veritabanı bağlantı özniteliklerinin tamamını desteklemeyebileceği unutulmamalıdır.

Değiştirgeler

öznitelik

PDO::ATTR_* sabitlerinden biri. Sabitlerin açıklamaları için Öntanımlı Sabitler sayfasında bulunabilir. Veritabanı bağlantılarına uygulanabilecek sürücüye özgü sabitler:

  • 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

Bazı sürücüler sürücüye özgü "ek" öznitelikleri kullanamayabilir. Sürücüye özgü özniteliklerin başka sürücülerde kullanılmamasına ise özellikle dikkat edilmelidir.

Dönen Değerler

Başarısızlık durumunda null yoksa istenen PDO özniteliğinin değerini döndürür.

Örnekler

Örnek 1 - Veritabanı bağlantı özniteliklerinin öğrenilmesi

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

Ayrıca Bakınız

add a note add a note

User Contributed Notes 6 notes

up
7
Phil Hilton
3 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
4
Robert Parham
6 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.
up
1
grzegorz dot adam dot kowalski at gmail dot com
1 year ago
On PHP 7.4.4 an unsuccessful call returns FALSE, not NULL.
up
0
756567406 at qq dot com
5 years ago
Mysql on version  "5.6.29" not support "PDO::ATTR_PREFETCH"  and "PDO::ATTR_TIMEOUT"
up
-3
mfinkyr at gmail dot com
5 years ago
As of 30-Jan-2016, MariaDB on version "5.5.5-10.1.9-MariaDB" apparently  does not support: "PREFETCH" nor "TIMEOUT".
up
-29
peter dot hopfgartner at r3-gis dot com
12 years ago
The Oracle driver seems to not support PDO::getAttribute():

ociPHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[IM001]: Driver does not support this function: driver does not support getting attributes' in ...
To Top