getAttribute()

1. 定义

顾名思义,该方法获取一个数据库连接的指定属性的值。 失败时返回NULL

2. 语法

PDO::getAttribute ( int $attribute ) : mixed

3. 参数说明

参数 可选性 数据类型 描述
$attribute 必需 常量或整型 属性类型

其中$attribute有以下几个可选值:

  • 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:空字符串与null之间的转换
  • PDO::ATTR_PERSISTENT
  • PDO::ATTR_PREFETCH
  • PDO::ATTR_SERVER_INFO:服务器信息
  • PDO::ATTR_SERVER_VERSION:服务器版本
  • PDO::ATTR_TIMEOUT:最大超时时间

4. 示例

假定您安装了 MySQL,并配置了用户root,密码为mysql,并存在一个名为test的数据库:

<?php

// PDO::getAttribute()
// 获取一个**数据库连接**的指定属性的值

try {
    $config = ['driver' => 'mysql', 'host' => 'localhost', 'dbname' => 'test', 'charset' => 'utf8', 'user' => 'root', 'pwd' => 'mysql'];
    $dsn = sprintf('%s:host=%s;dbname=%s;charset=%s', $config['driver'], $config['host'], $config['dbname'], $config['charset']);
    $conn = new PDO($dsn, $config['user'], $config['pwd']);
    $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // 设置属性
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 设置属性
    if ($conn) echo '数据库连接成功!',"\n";

    $attributes = [
        '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',
    ];
    foreach ($attributes as $key => $value) {
        echo sprintf("%-30s:%s\n", $value, $conn->getAttribute(constant($value)));// 注:constant()函数获取常量名的常量值
    }
} catch (PDOException $e) {
    error_log($e->getMessage()); // 将错误信息记录至日志
    echo $e->getMessage();
}
/* 输出:
数据库连接成功!
PDO::ATTR_AUTOCOMMIT          :1
PDO::ATTR_CASE                :0
PDO::ATTR_CLIENT_VERSION      :mysqlnd 5.0.12-dev - 20150407 - $Id: 7cc7cc96e675f6d72e5cf0f267f48e167c2abb23 $
PDO::ATTR_CONNECTION_STATUS   :localhost via TCP/IP
PDO::ATTR_DRIVER_NAME         :mysql
PDO::ATTR_ERRMODE             :2
PDO::ATTR_ORACLE_NULLS        :0
PDO::ATTR_PERSISTENT          :
SQLSTATE[IM001]: Driver does not support this function: driver does not support that attribute
SQLSTATE[IM001]: Driver does not support this function: driver does not support that attribute
*/

5. 延展阅读