php PDO属性设置与操作方法分析


  本文标签:php,PDO,属性设置

本文实例讲述了php PDO属性设置与操作方法 。分享给大家供大家参考,具体如下:

设置PDO在处理数据的过程中采用什么方式去处理

PDO::setAttribute:设置属性

PDO::getAttribute:获取属性

语法:

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:默认的,非长连接

什么情况下使用长连接?

不同的脚本的执行间距非常短,同时每个脚本都要操作数据库(Mysql:mysql_pconnect())

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《php+Oracle数据库程序设计技巧总结》、《PHP+MongoDB数据库操作技巧大全》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助 。

您可能感兴趣的文章:

  • PHP中PDO连接数据库中各种DNS设置方法小结
  • PHP PDO fetch 模式各种参数的输出结果一览
  • PHP5中使用PDO连接数据库的方法
  • PHP PDO函数库详解
  • php使用PDO方法详解
  • php中mysql连接方式PDO使用详解
  • PHP中PDO的错误处理
  • php中在PDO中使用事务(Transaction)
  • php中PDO方式实现数据库的增删改查
  • php使用pdo连接并查询sql数据库的方法
  • php mysql PDO 查询操作的实例详解
  • php使用pdo连接mssql server数据库实例