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代码
Apr 09 PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 PHP
PHP编程函数安全篇
Jan 08 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
php获取文件名后缀常用方法小结
Feb 24 PHP
php算法实例分享
Jul 14 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 PHP
phpmyadmin在宝塔面板里进不去的解决方案
Jul 06 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限制ip地址范围的方法
2015/03/31 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
js中将字符串转换成json的三种方式
2011/01/12 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
nodejs中模块定义实例详解
2017/03/18 NodeJs
H5图片压缩与上传实例
2017/04/21 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
原生js实现简单的模态框示例
2017/09/08 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
图文详解vue框架安装步骤
2019/02/12 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
印度网上药店:1mg
2017/10/13 全球购物
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
新学期校长寄语
2014/01/18 职场文书
上级检查欢迎词
2014/01/18 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
2015年招生工作总结
2015/05/04 职场文书
学习计划是什么
2019/04/30 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
vue封装数字翻牌器
2022/04/20 Vue.js
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python