php --PDO属性

php -- PDO属性设置
设置PDO在处理数据的过程中采用什么方式去处理
PDO::setAttribute:设置属性
PDO::getAttribute:获取属性
也可以在 直接PDO初始化时传递参数
1
2
3
$db = new PDO( $dsn , $username , $password , array (
 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));

语法:
bool  PDO::setAttribute  ( int  $attribute  ,  mixed   $value  )
设置数据库句柄属性。下面列出了一些可用的通用属性;有些驱动可能使用另外的特定属性。
参数
$attribute
PDO::ATTR_CASE :强制列名为指定的大小写。他的$value可为:
  PDO::CASE_LOWER :强制列名小写。
  PDO::CASE_NATURAL :保留数据库驱动返回的列名。
  PDO::CASE_UPPER :强制列名大写。

PDO::ATTR_ERRMODE :错误报告。他的$value可为:
  PDO::ERRMODE_SILENT : 仅设置错误代码。
  PDO::ERRMODE_WARNING : 引发  E_WARNING  错误
  PDO::ERRMODE_EXCEPTION : 抛出  exceptions  异常。
PDO::ATTR_ORACLE_NULLS  (在所有驱动中都可用,不仅限于Oracle): 转换 NULL 和空字符串。他的$value可为:
  PDO::NULL_NATURAL : 不转换。
  PDO::NULL_EMPTY_STRING : 将空字符串转换成  NULL  
  PDO::NULL_TO_STRING : 将 NULL 转换成空字符串。
PDO::ATTR_STRINGIFY_FETCHES : 提取的时候将数值转换为字符串。 Requires  bool  .

PDO::ATTR_STATEMENT_CLASS : 设置从PDOStatement派生的用户提供的语句类。 不能用于持久的PDO实例。 需要  array(string 类名, array(mixed 构造函数的参数))

PDO::ATTR_TIMEOUT : 指定超时的秒数。并非所有驱动都支持此选项,这意味着驱动和驱动之间可能会有差异。比如,SQLite等待的时间达到此值后就放弃获取可写锁,但其他驱动可能会将此值解释为一个连接或读取超时的间隔。 需要  int  类型。
PDO::ATTR_AUTOCOMMIT  (在OCI,Firebird 以及 MySQL中可用): 是否自动提交每个单独的语句。

PDO::ATTR_EMULATE_PREPARES  启用或禁用预处理语句的模拟。 有些驱动不支持或有限度地支持本地预处理。使用此设置强制PDO总是模拟预处理语句(如果为  TRUE   ),或试着使用本地预处理语句(如果为  FALSE   )。如果驱动不能成功预处理当前查询,它将总是回到模拟预处理语句上。 需要  bool  类型。

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY  (在MySQL中可用): 使用缓冲查询。

PDO::ATTR_DEFAULT_FETCH_MODE : 设置默认的提取模式。关于模式的说明可以在  PDOStatement::fetch()  文档找到。 

常用属性
PDO::ATTR_AUTOCOMMIT :设置当前连接Mysql服务器的客户端的SQL语句是否自动执行, 默认是自动提交
//自动提交属性 var_dump ( $pdo ->getAttribute(PDO::ATTR_AUTOCOMMIT)); //1 $pdo ->setAttribute(PDO::ATTR_AUTOCOMMIT,0); var_dump ( $pdo ->getAttribute(PDO::ATTR_AUTOCOMMIT)); //0

PDO::ATTR_CASE :当pdo从结果集中获取数据的时候,如何处理对应的字段的名字
  PDO::CASE_LOWER:将所有字段都小写显示
  PDO::CASE_UPPER:所有字段都大写显示
  PDO::CASE_NATURAL:原本怎么样就怎么样
$pdo ->setAttribute(PDO::ATTR_CASE,PDO::CASE_NATURAL); //或 $pdo->setAttribute(PDO::ATTR_CASE,1); var_dump (PDO::CASE_UPPER); //1 转换为大写 var_dump (PDO::CASE_LOWER); //2 转换为小写 var_dump (PDO::CASE_NATURAL); //0 是怎样就是怎样 $sql = "select * from user "; $stmt = $pdo ->query( $sql ); var_dump ( $stmt ->fetch(PDO::FETCH_ASSOC));

PDO::ATTR_ERRMODE :错误模式,当pdo出现错误的时候到底使用哪种模式进行处理
  PDO::ERRMODE_SILENT:静默模式,默认的出错了不管
  PDO::ERRMODE_WARNING:警告模式,如果出错了就会报出警告
  PDO::ERRMODE_EXCEPTION:异常模式,如果出错会采用异常来处理(PDOException)
var_dump ( $pdo ->getAttribute(PDO::ATTR_ERRMODE)); var_dump (PDO::ERRMODE_SILENT); //0 静默模式,默认的出错了不管 var_dump (PDO::ERRMODE_WARNING); //1 警告模式,如果出错了就会报出警告 var_dump (PDO::ERRMODE_EXCEPTION); //2 异常模式,如果出错会采用异常来处理(PDOException)

PDO::ATTR_PERSISTENT :当前对Mysql服务器的连接是否是长连接
TRUE:是长连接(长连接的使用必须要配合:Apache(connection:keepAlive),Mysqld)
FALSE:默认的,非长连接
什么情况下使用长连接?
  1. 不同的脚本的执行间距非常短,同时每个脚本都要操作数据库(Mysql:mysql_pconnect())

你可能感兴趣的:(php,pdo属性,PHP)