欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-10 10:05:00
本文实例讲述了php pdo属性设置与操作方法。分享给大家供大家参考,具体如下: 设置pdo在处理数据的过程中采用什么方式去处理 pdo::setattribute:设...

本文实例讲述了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程序设计有所帮助。