• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • PDO::getAttribute()

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

    取回一个数据库连接的属性

    说明

    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

    范例

    取回数据库连接属性

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

    参见

    • PDO::setAttribute() 设置属性
    • PDOStatement::getAttribute() 检索一个语句属性
    • PDOStatement::setAttribute() 设置一个语句属性
    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";
      }
    }
    ?>
    
    Mysql on version "5.6.29" not support "PDO::ATTR_PREFETCH" and "PDO::ATTR_TIMEOUT"
    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.
    As of 30-Jan-2016, MariaDB on version "5.5.5-10.1.9-MariaDB" apparently does not support: "PREFETCH" nor "TIMEOUT".
    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 ...