在 PDO 对象中有很多属性可以用来调整 PDO 的行为或获取底层驱动程序状态,详细的说明大家可以通过查看 PHP 帮助文档(http://www.php.net/pdo)来获取详细的 PDO 属性列表信息。如果在创建 PDO 对象时,没有在构造方法中最后一个参数设置过的属性选项,可以在对象创建完成以后,通过 PDO 对象中的 setAttribute() 和 getAttribute() 方法设置和获取这些属性的值。
getAttribute() 方法只需要提供一个参数,传递一个特定的属性名称,执行成功后会返回该属性所指定的值,否则返回 NULL,语法格式如下所示:
其中参数 $attribute 为 PDO::ATTR_* 常量中的一个,下列为应用到数据库连接中的常量:
【示例】使用 getAttribute() 方法获取属性的值。
<?php
header("Content-Type: text/html;charset=utf-8");
$opt = [PDO::ATTR_PERSISTENT=>TRUE];
try{
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1','root','root',$opt);
}catch(PDOException $e){
echo '数据库连接失败:'.$e->getMessage();
exit();
}
echo 'PDO 是否关闭自动提交功能:'.$pdo -> getAttribute(PDO::ATTR_AUTOCOMMIT);
echo '<br>当前 PDO 的错误处理模式:'.$pdo -> getAttribute(PDO::ATTR_ERRMODE);
echo '<br>表字段字符的大小写转换:'.$pdo -> getAttribute(PDO::ATTR_CASE);
echo '<br>与连接状态相关的特有信息:'.$pdo -> getAttribute(PDO::ATTR_CONNECTION_STATUS);
echo '<br>空字符串转换为 SQL 的 null:'.$pdo -> getAttribute(PDO::ATTR_ORACLE_NULLS);
echo '<br>应用程序提前获取数据大小:'.$pdo -> getAttribute(PDO::ATTR_PERSISTENT);
echo '<br>数据库特有的服务器信息:'.$pdo -> getAttribute(PDO::ATTR_SERVER_INFO);
echo '<br>数据库服务器版本号:'.$pdo -> getAttribute(PDO::ATTR_SERVER_VERSION);
echo '<br>数据库客户端版本号:'.$pdo -> getAttribute(PDO::ATTR_CLIENT_VERSION);
?>
运行结果如下:
setAttribute() 方法可以用来设置数据库句柄的属性,语法格式如下:
这个方法需要两个参数,第一个参数 $attribute 提供 PDO 对象特定的属性名,第二个参数 $value 则是为这个指定的属性赋一个值。下面列出了一些可用的通用属性名称和可以使用的值:
【示例】使用 setAttribute() 方法设置数据库句柄的属性
<?php
header("Content-Type: text/html;charset=utf-8");
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1','root','root',$opt);
$pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
echo 'PDO::ATTR_CASE属性的值为:'.$pdo -> getAttribute(PDO::ATTR_CASE);
$pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
echo '<br>PDO::ATTR_CASE属性的值为:'.$pdo -> getAttribute(PDO::ATTR_CASE);
$pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
echo '<br>PDO::ATTR_CASE属性的值为:'.$pdo -> getAttribute(PDO::ATTR_CASE);
?>
运行结果如下: