0

0

php pdo函数库用法详解

php中文网

php中文网

发布时间:2016-07-25 08:54:37

|

1132人浏览过

|

来源于php中文网

原创

  1. pdo->begintransaction() — 标明回滚起始点
  2. pdo->commit() — 标明回滚结束点,并执行sql
  3. pdo->__construct() — 建立一个pdo链接数据库的实例
  4. pdo->errorcode() — 获取错误码
  5. pdo->errorinfo() — 获取错误的信息
  6. pdo->exec() — 处理一条sql语句,并返回所影响的条目数
  7. pdo->getattribute() — 获取一个“数据库连接对象”的属性
  8. pdo->getavailabledrivers() — 获取有效的pdo驱动器名称
  9. pdo->lastinsertid() — 获取写入的最后一条数据的主键值
  10. pdo->prepare() — 生成一个“查询对象”
  11. pdo->query() — 处理一条sql语句,并返回一个“pdostatement”
  12. pdo->quote() — 为某个sql中的字符串添加引号
  13. pdo->rollback() — 执行回滚
  14. pdo->setattribute() — 为一个“数据库连接对象”设定属性
复制代码

二、pdostatement

  1. pdostatement->bindcolumn() — bind a column to a php variable
  2. pdostatement->bindparam() — binds a parameter to the specified variable name
  3. pdostatement->bindvalue() — binds a value to a parameter
  4. pdostatement->closecursor() — closes the cursor, enabling the statement to be executed again.
  5. pdostatement->columncount() — returns the number of columns in the result set
  6. pdostatement->errorcode() — fetch the sqlstate associated with the last operation on the statement handle
  7. pdostatement->errorinfo() — fetch extended error information associated with the last operation on the statement handle
  8. pdostatement->execute() — executes a prepared statement
  9. pdostatement->fetch() — fetches the next row from a result set
  10. pdostatement->fetchall() — returns an array containing all of the result set rows
  11. pdostatement->fetchcolumn() — returns a single column from the next row of a result set
  12. pdostatement->fetchobject() — fetches the next row and returns it as an object.
  13. pdostatement->getattribute() — retrieve a statement attribute
  14. pdostatement->getcolumnmeta() — returns metadata for a column in a result set
  15. pdostatement->nextrowset() — advances to the next rowset in a multi-rowset statement handle
  16. pdostatement->rowcount() — returns the number of rows affected by the last sql statement
  17. pdostatement->setattribute() — set a statement attribute
  18. pdostatement->setfetchmode() — set the default fetch mode for this statement
复制代码

详解1) pdo中的数据库连接

  1. $dsn = ‘mysql:dbname=ent;host=127.0.0.1′;
  2. $user = ‘root';
  3. $password = ‘123456′;
  4. try {
  5. $dbh = new pdo($dsn, $user, $password, array(pdo::attr_persistent => true));
  6. $dbh->query('set names utf8;');
  7. foreach ($dbh->query('select * from tpm_juese') as $row) {
  8. print_r($row);
  9. }
  10. } catch (pdoexception $e) {
  11. echo ‘connection failed: ‘ . $e->getmessage();
  12. }
复制代码

许多web应用会因为使用了向数据库的持久连接而得到优化。持久连接不会在脚本结束时关闭, 相反它会被缓存起来并在另一个脚本通过同样的标识请求一个连接时得以重新利用。 持久连接的缓存可以使你避免在脚本每次需要与数据库对话时都要部署一个新的连接的资源消耗,让你的web应用更加快速。 上面实例中的array(pdo::attr_persistent => true)就是把连接类型设置为持久连接。

详解2) pdo中的事务 pdo->begintransaction(),pdo->commit(),pdo->rollback()这三个方法是在支持回滚功能时一起使用的。 pdo->begintransaction()方法标明起始点,pdo->commit()方法标明回滚结束点,并执行sql,pdo->rollback()执行回滚。

  1. try {
  2. $dbh = new pdo('mysql:host=localhost;dbname=test', ‘root', ”);
  3. $dbh->query('set names utf8;');
  4. $dbh->setattribute(pdo::attr_errmode, pdo::errmode_exception);
  5. $dbh->begintransaction();
  6. $dbh->exec(”insert into `test`.`table` (`name` ,`age`)values ('mick', 22);”);
  7. $dbh->exec(”insert into `test`.`table` (`name` ,`age`)values ('lily', 29);”);
  8. $dbh->exec(”insert into `test`.`table` (`name` ,`age`)values ('susan', 21);”);
  9. $dbh->commit();
  10. } catch (exception $e) {
  11. $dbh->rollback();
  12. echo “failed: ” . $e->getmessage();
  13. }
  14. ?>
复制代码

现在已经通过pdo建立了连接,在部署查询之前你必须搞明白pdo是怎样管理事务的。如果你以前从未遇到过事务处理,(现在简单介绍一下:)它们提供了4个主要的特性:原子性,一致性,独立性和持久性(atomicity, consistency, isolation and durability,acid)通俗一点讲,一个事务中所有的工作在提交时,即使它是分阶段执行的,也要保证安全地应用于数据库,不被其他的连接干扰。事务工作也可以在请求发生错误时轻松地自动取消。

事务的典型运用就是通过把批量的改变“保存起来”然后立即执行。这样就会有彻底地提高更新效率的好处。换句话说,事务可以使你的脚本更快速同时可能更健壮(要实现这个优点你仍然需要正确的使用它们)。

露阳PHP企业系统1.0
露阳PHP企业系统1.0

1.) 将所有文件解压到php环境中,本程序才用smarty+php+mysql设计。如果运行不了,请修改hhy文件夹下的smarty.php文件改法请看说明2.) 修改configs下的config.inc.php下的连接数据库的密码和用户名3.) 本程序没有做安全页面,人工导入sql.inc到mysql数据库。管理员初始化帐号为admin,密码为hhy。后台地址:http://你的网站地址/h

下载

不幸运的是,并不是每个数据库都支持事务,因此pdo需要在建立连接时运行在被认为是“自动提交”的模式下。自动提交模式意味着你执行的每个查询都有它自己隐含的事务处理,无论数据库支持事务还是因数据库不支持而不存在事务。如果你需要一个事务,你必须使用 pdo->begintransaction() 方法创建一个。如果底层驱动不支持事务处理,一个pdoexception就会被抛出(与你的异常处理设置无关,因为这总是一个严重的错误状态)。在一个事物中,你可以使用 pdo->commit() 或 pdo->rollback() 结束它,这取决于事务中代码运行是否成功。 当脚本结束时或一个连接要关闭时,如果你还有一个未处理完的事务,pdo将会自动将其回滚。这是对于脚本意外终止的情况来说是一个安全的方案——如果你没有明确地提交事务,它将会假设发生了一些错误,为了你数据的安全,所以就执行回滚了。

二、pdostatement

  1. // 修改默认的错误显示级别
  2. $dbh->setattribute(pdo::attr_errmode, pdo::errmode_warning);
  3. ?>
复制代码

属性列表: pdo::param_bool 表示一个布尔类型 pdo::param_null 表示一个sql中的null类型 pdo::param_int 表示一个sql中的integer类型 pdo::param_str 表示一个sql中的sql char,varchar类型 pdo::param_lob 表示一个sql中的large object类型 pdo::param_stmt 表示一个sql中的recordset类型,还没有被支持 pdo::param_input_output specifies that the parameter is an inout parameter for a stored procedure. you must bitwise-or this value with an explicit pdo::param_* data type. pdo::fetch_lazy 将每一行结果作为一个对象返回 pdo::fetch_assoc 仅仅返回以键值作为下标的查询的结果集,名称相同的数据只返回一个 pdo::fetch_named 仅仅返回以键值作为下标的查询的结果集,名称相同的数据以数组形式返回 pdo::fetch_num 仅仅返回以数字作为下标的查询的结果集 pdo::fetch_both 同时返回以键值和数字作为下标的查询的结果集 pdo::fetch_obj 以对象的形式返回结果集 pdo::fetch_bound 将pdostatement::bindparam()和pdostatement::bindcolumn()所绑定的值作为变量名赋值后返回 pdo::fetch_column 表示仅仅返回结果集中的某一列 pdo::fetch_class 表示以类的形式返回结果集 pdo::fetch_into 表示将数据合并入一个存在的类中进行返回 pdo::fetch_func pdo::fetch_group pdo::fetch_unique pdo::fetch_key_pair 以首个键值下表,后面数字下表的形式返回结果集 pdo::fetch_classtype pdo::fetch_serialize 表示将数据合并入一个存在的类中并序列化返回 pdo::fetch_props_late available since php 5.2.0 pdo::attr_autocommit 在设置成true的时候,pdo会自动尝试停止接受委托,开始执行 pdo::attr_prefetch 设置应用程序提前获取的数据大小,并非所有的数据库哦度支持 pdo::attr_timeout 设置连接数据库超时的值 pdo::attr_errmode 设置error处理的模式 pdo::attr_server_version 只读属性,表示pdo连接的服务器端数据库版本 pdo::attr_client_version 只读属性,表示pdo连接的客户端pdo驱动版本 pdo::attr_server_info 只读属性,表示pdo连接的服务器的meta信息 pdo::attr_connection_status pdo::attr_case 通过pdo::case_*中的内容对列的形式进行操作 pdo::attr_cursor_name 获取或者设定指针的名称 pdo::attr_cursor 设置指针的类型,pdo现在支持pdo::cursor_fwdonly和pdo::cursor_fwdonly pdo::attr_driver_name 返回使用的pdo驱动的名称 pdo::attr_oracle_nulls 将返回的空字符串转换为sql的null pdo::attr_persistent 获取一个存在的连接 pdo::attr_statement_class pdo::attr_fetch_catalog_names 在返回的结果集中,使用自定义目录名称来代替字段名。 pdo::attr_fetch_table_names 在返回的结果集中,使用自定义表格名称来代替字段名。 pdo::attr_stringify_fetches pdo::attr_max_column_len pdo::attr_default_fetch_mode available since php 5.2.0 pdo::attr_emulate_prepares available since php 5.1.3. pdo::errmode_silent 发生错误时不汇报任何的错误信息,是默认值 pdo::errmode_warning 发生错误时发出一条php的e_warning的信息 pdo::errmode_exception 发生错误时抛出一个pdoexception pdo::case_natural 回复列的默认显示格式 pdo::case_lower 强制列的名字小写 pdo::case_upper 强制列的名字大写 pdo::null_natural pdo::null_empty_string pdo::null_to_string pdo::fetch_ori_next 获取结果集中的下一行数据,仅在有指针功能时有效 pdo::fetch_ori_prior 获取结果集中的上一行数据,仅在有指针功能时有效 pdo::fetch_ori_first 获取结果集中的第一行数据,仅在有指针功能时有效 pdo::fetch_ori_last 获取结果集中的最后一行数据,仅在有指针功能时有效 pdo::fetch_ori_abs 获取结果集中的某一行数据,仅在有指针功能时有效 pdo::fetch_ori_rel 获取结果集中当前行后某行的数据,仅在有指针功能时有效 pdo::cursor_fwdonly 建立一个只能向后的指针操作对象 pdo::cursor_scroll 建立一个指针操作对象,传递pdo::fetch_ori_*中的内容来控制结果集 pdo::err_none (string)

设定没有错误时候的错误信息 pdo::param_evt_alloc allocation event pdo::param_evt_free deallocation event pdo::param_evt_exec_pre event triggered prior to execution of a prepared statement. pdo::param_evt_exec_post event triggered subsequent to execution of a prepared statement. pdo::param_evt_fetch_pre event triggered prior to fetching a result from a resultset. pdo::param_evt_fetch_post event triggered subsequent to fetching a result from a resultset. pdo::param_evt_normalize event triggered during bound parameter registration allowing the driver to normalize the parameter name.



相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

307

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

183

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

29

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

103

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

54

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

764

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

92

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

【李炎恢】ThinkPHP8.x 后端框架课程
【李炎恢】ThinkPHP8.x 后端框架课程

共50课时 | 4.6万人学习

Swoft2.x速学之http api篇课程
Swoft2.x速学之http api篇课程

共16课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号