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


Posted in PHP onDecember 27, 2018

本文实例讲述了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 相关文章推荐
台湾中原大学php教程孙仲岳主讲
Jan 07 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 PHP
PHP反向代理类代码
Aug 15 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
Laravel框架实现多数据库连接操作详解
Jul 12 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
Mar 23 PHP
php实现的PDO异常处理操作分析
Dec 27 #PHP
CI框架网页缓存简单用法分析
Dec 26 #PHP
CI框架附属类用法分析
Dec 26 #PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 #PHP
CI框架实现创建自定义类库的方法
Dec 25 #PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 #PHP
PHP使用SOAP调用API操作示例
Dec 25 #PHP
You might like
PHP的一个基础知识 表单提交
2011/07/04 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
微信小程序签到功能
2018/10/31 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
Python中type的构造函数参数含义说明
2015/06/21 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
python3.6使用urllib完成下载的实例
2018/12/19 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
好人好事事迹材料
2014/02/12 职场文书
办公室主任职责范本
2014/03/07 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
2015年端午节活动总结
2015/02/11 职场文书
开网店计划分析
2019/07/30 职场文书
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers