《细说PHP》第四版 样章 第18章 数据库抽象层PDO 5
18.5 使用PDO对象
PDO扩展类库为PHP访问数据库定义了一个轻量级、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,大大简化了数据库的操作,并屏蔽不同数据库之间的差异。
18.5.1 调整PDO的行为属性
在PDO对象中有很多属性可以用来调整PDO的行为或获取底层驱动程序状态,可以通过查看PHP帮助文档(http://www.php.net/pdo)获得详细的PDO属性列表信息。在创建PDO对象时,没有在构造方法中最后一个参数中设置的属性选项,也可以在对象创建完成后,通过PDO对象中的setAttribute()和getAttribute()方法设置并获取这些属性的值。
1.getAttribute()
该方法只需要提供一个参数,传递一个特定的属性名称,如果执行成功,则返回该属性所指定的值,否则返回NULL。示例如下:

2.setAttribute()
这个方法需要两个参数,第一个参数提供PDO对象特定的属性名,第二个参数为这个指定的属性赋一个值。例如,设置PDO的错误模式,需要设置PDO对象中ATR_ERROMODE属性的值,如下所示:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //设置抛出异常处理错误
18.5.2 PDO处理PHP程序和数据库之间的数据类型转换
PDO在某种程度上对类型是不可知的,因此,它喜欢将任何数据都表示为字符串,而不将其转换为整型或双精度类型。因为字符串类型是最精确的类型,在PHP中具有广泛的应用,过早地将数据转换为整型或者双精度类型可能导致截断或舍入错误。通过将数据以字符串的形式抽出,PDO为用户提供了一些脚本控制,使用普通的PHP类型转换方式就可以控制如何进行转换及何时进行转换。
如果结果集中的某列包含一个NULL值,PDO则会将其映射为PHP的NULL值。Oracle在将数据返回PDO时会将空字符串转换为NULL,但是PHP支持的任何其他数据库都不会这样处理,从而导致了可移植性问题。PDO提供了一个驱动程序级的属性PDO::ATTR_ORACLE_NULLS,该属性会为其他数据驱动程序模拟此行为。此属性设置为TRUE,在获取时会把空字符串转换为NULL;默认情况下该属性值为FALSE。代码如下:
$dbh->setAttribute(PDO::ATTR_ORACLE_NULLS, true);
设置该属性后,通过$dbh对象打开的任何语句中的空字符串都将被转换为NULL。


《细说PHP》第四版 样章 第18章 数据库抽象层PDO 5的更多相关文章
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 1
现在,如果你已经能熟练地使用MySQL客户端软件来操作数据库中的数据,就可以开始学习如何使用PHP来显示和修改数据库中的数据了.PHP提供了标准的函数来操作数据库.在PHP 5以上的版本中可以使用My ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12
18.9 管理表books实例 在Web项目中,几乎所有模块都要和数据表打交道,而对表的管理无非就是增.删.改.查等操作,所以熟练掌握对表进行管理的这些常见操作是十分有必的.本例为了能更好地展示PD ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 11
18.8.3 完美分页类的代码实现 分页类的编写除了需要使用在18.8.2节中提供的可以操作的3个成员方法,还需要更多的成员,但其他的成员方法和成员属性只需要内部使用,并不需要用户在对象外部操作,所 ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 7
18.6 PDO对预处理语句的支持 在生成网页时,许多PHP脚本通常都会执行除参数外其他部分完全相同的查询语句.针对这种重复执行一个查询,但每次迭代使用不同参数的情况,PDO提供了一种名为预处理语句 ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 4
18.4 创建PDO对象 使用PDO在与不同数据库管理系统之间交互时,PDO对象中的成员的方法是统一各种数据库的访问接口,所以在使用PDO与数据库交互之前,首先要创建一个PDO对象.在通过构造方法创 ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 10
18.8 设计完美分页类 数据记录列表几乎出现在Web项目的每个模块中,假设一张表中有十几万条记录,我们不可能一次全都显示出来,当然也不能仅显示几十条.为了解决这样的矛盾,通常在读取时设置以分页的形 ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 9
18.7 PDO的事务处理 事务是确保数据库一致的机制,是一个或一系列的查询,作为一个单元的一组有序的数据库操作.如果组中的所有SQL语句都操作成功,则认为事务成功,那么事务被提交,其修改将作用于所 ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 8-1
18.6.5 获取数据 PDO的数据获取方法与其他数据库扩展非常类似,只要成功执行SELECT查询,都会有结果集对象生成.不管使用PDO对象中的query()方法,还是使用prepare()和exe ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 8
18.6.4 执行准备好的查询 当准备好查询并绑定了相应的参数后,就可以通过调用PDOStatement类对象中的execute()方法,反复执行在数据库缓存区准备好的语句了.在下面的示例中,向前面 ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 6
18.5.3 PDO的错误处理模式 PDO共提供了3种不同的错误处理模式,不仅可以满足不同风格的编程,也可以调整扩展处理错误的方式. 1.PDO::ERRMODE_SILENT 这是默认模式,在错误 ...
随机推荐
- SERCOS总线程序相关
SERCOS程序就是围绕主机发送MDT电报,伺服在下一个周期发送AT电报作为应答这个原则来实现的,这个过程是由控制字等控制实现的,读程序的时候如果忽略这点,可能在想程序从哪里读数据,在哪里写数据呢.. ...
- 函数防抖VS函数节流
(1)函数防抖debounce 函数触发停止一段时间后(期间不能再触发 debounce,否则将重新计时),再执行回调函数 机制: 防抖函数主要利用定时器的延迟执行特性,根据是否有定时器在等待执行: ...
- make && make install的区别
./configure 配置环境make 是编译的意思.就是把源码包编译成二进制可执行文件make install 就是安装的意思. make && make install 的意思是 ...
- 【python之路.一】基础
数学操作符 数据类型 字符串复制(*复制次数int).连接(+) 该类操作只能同为字符串类型,否则需要强制转换类型 变量名规则 (驼峰式变量名&下划线式均可) # 注释 BIF(built-i ...
- [CodeForces-1225B] TV Subscriptions 【贪心】【尺取法】
[CodeForces-1225B] TV Subscriptions [贪心][尺取法] 标签: 题解 codeforces题解 尺取法 题目描述 Time limit 2000 ms Memory ...
- element form 对单个字段做验证
this.$refs[formName].validateField('phone', phoneError => { //验证手机号码是否正确 if (!phoneError) { conso ...
- Linux下动态切换EHCI控制器下端口的速率(即切换为12M)
在sys目录下找到对应的控制器 例如:/sys/devices/platform/soc/ehci,直接操作该目录下的companion echo 1 > companion 将port1设 ...
- C语言中的顺序点
C语言盲点1.函数参数的求值顺序依赖于编译器,例如f(a,a++);是先求a++还是求a不一定 2.C语言中的大多数运算符对其操作数的求值顺序也依赖于编译器 警告int i = f() * g();这 ...
- EF中存储过程的使用
存储过程即用来完成一个特定功能的一段代码.它的优缺点 优点 存储过程可封装,并隐藏复杂的商业逻辑. 存储过程可以回传值,并可以接受参数. 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与 ...
- C# 英语纠错 LanguageTool
WPF中,对单词拼写错误,textbox有相应的附加属性可以设置. <TextBox SpellCheck.IsEnabled="True" /> 但是此属性只在WPF ...