PDO数据库抽象层

一、php,ini文件配置

要启用PDO,首先必须加载"extension=php_pdo.dll",如果想其支持某个具体的数据库,那么还要加载对应的数据库选项。如支持MySQL数据库,则还需要加载"extension=php_pdo_mysql.dll"。

二、PDO构造函数

语法:_construct(string $dsn[, string $username[, string $password[, array $driver_options]]])

参数:

  • dsn:数据源名称,包括主机名端口号和数据库名称
  • username:连接数据库的用户名
  • password:连接数据库的密码
  • driver_options:连接数据库的其他选项
header("content-type:text/html;charset=utf8");
$dbms="mysql";
$dbName="db_database";
$user="root";
$pwd="";
$host="localhost";
$dsn="$dbms:host=$host;dbname=$dbName";
try{
    $pdo=new PDO($dsn, $user, $pwd);
    echo "PDO连接MySQL成功。";
}catch(Exception $e){
    echo $e->getMessage()."<br>";
}

三、PDO中执行SQL语句

1. exec() 方法

语法:int PDO::exec(string statement)

参数:statement是要执行的SQL语句。该方法返回执行SQL语句时受影响的行数,通常用于INSERT、DELETE和UPDATE语句中。

2. query() 方法

语法:PDOStatement PDO::query(string statement)

参数:statement是要执行的SQL语句。它返回的是一个PDOStatement对象

3. 预处理语句--prepare()和execute()

预处理语句包括prepare()和execute()两种方法。首先通过prepare()方法做查询的准备工作,然后,通过execute()方法执行查询。同时还可以通过bindParam()方法来绑定参数提供给execute()方法。

语法:PDOStatement PDO::prepare(string statement[, array driver_options])

           bool PDOStatement::execute([array input_parameters])

4. PDO中获取结果集

- fetch()方法:获取结果集中的下一行数据

语法:mixed PDOStatement::fetch([int fetch_style[, int cursor_orientation[, int cuisor_offset]]])

参数:

fetch_style控制结果集返回形式的可选值
说明
PDO::FETCH_ASSOC关联数组形式
PDO::FETCH_NUM数组索引数组形式
PDO::FETCH_BOTH两者数组形式都有,这是默认的
PDO::FETCH_OBJ按照对象的形式,类似于以前的mysql_fetch_object()
PDO::FETCH_BOUND以布尔值的形式返回结果,同时将获取的列赋值给bindParam()方法
PDO::FETCH_LAZY以关联数组、数字索引数组和对象3中形式返回结果

cursor_orientation:PDOStatement对象的一个滚动游标,用于获取指定的一行

cursor_offset:游标的偏移量

//初始化一个PDO对象
$pdo=new PDO($dsn, $user, $pwd);
$query = "select * from database";
$result = $pdo->prepare($query);
$result->execute();
while($res=$result->fetch(PDO::FETch_ASSOC)){
    ...
}

- fetchAll() 方法:获取结果集中的所有行,返回值是一个包含结果集中所有数据的二维数组。

语法:array PDOStatement::fetchAll(int fetch_style[, int column_index]])

参数:fetch_style,控制结果集中数据的返回方式

column_index,字段的索引

- fetchColunm() 方法,获取结果集中下一行指定列的值

语法:string PDOStatement::fetchColumn([int column_number])

参数:column_number设置行中列的索引值,该值从0开始,如果删除该值则从第一列开始取值。

四、PDO中捕获SQL语句中的错误

1. 使用默认模式--PDO::ERRMODE_SILENT

在默认模式中设置PDOStatement对象的errorCode属性,但不进行其他任何操作。

通过prepare() 和 execute() 方法向数据库中添加数据,设置PDOStatement对象的errorCode属性,手动检测代码中的错误。

2. 使用警告模式-- PDO::ERRMODE_WARNING

警告模式会产生一个PHP警告,并设置errorCode属性。如果设置的是警告模式,那么除非明确地检测错误代码,否则程序将继续按照其方式运行。

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

3. 使用异常模式-- PDO::ERRMODE_EXCEPTION

异常模式会创建一个PDOException,并设置errorCode属性。它可以将执行代码封装到一个try{...}catch{...}语句块中。

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)

五、PDO中错误处理

1. errorCode() 方法,获取操作数据库句柄时所发生的错误代码,这些错误代码被称为SQLSTATE代码。返回一个SQLSTATE代码,是由5个数字和字母组成的。

语法:int PDOStatement::errorCode(void);

2. errorInfo() 方法,用于获取操作数据库句柄时所发生的错误信息。返回值为一个数组,她包含了相关的错误信息。

语法:array PDOStatement::errorInfo(void);

六、PDO中事务处理

1. 开启事务- beginTransaction() 方法

beginTransaction()方法将关闭自动提交(autocommit)模式,知道事务提交或者回滚以后才恢复。、

2. 提交事务 - commit() 方法

commit() 方法完成事务的提交操作,成功返回true,否则返回false。

3. 事务回滚 - rollBack() 方法

rollBack() 方法执行事务的回滚操作。

 

 

 

php开发人员的文档,并且是中文的。 PHP 手册 Mehdi Achour Friedhelm Betz Antony Dovgal Nuno Lopes Philip Olson Georg Richter Damien Seguy Jakub Vrana 其他贡献者 编辑 Gabor Hojtsy 王远之 肖理达 肖盛文 黄啸宇 宋琪 陈伯乐 刘铭 崔岩 2005-11-18 版权 © 1997-2005 PHP 文档组 -------------------------------------------------------------------------------- 前言 作者和贡献者 I. 入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9. 运行时配置 III. 语言参考 10. 基本语法 11. 类型 12. 变量 13. 常量 14. 表达式 15. 运算符 16. 流程控制 17. 函数 18. 类与对象(PHP 4) 19. 类与对象(PHP 5) 20. 异常处理 21. 引用的解释 IV. 安全 22. 简介 23. 总则 24. 以 CGI 模式安装时 25. 以 Apache 模块安装时 26. 文件系统安全 27. 数据库安全 28. 错误报告 29. 使用 Register Globals 30. 用户提交的数据 31. 魔术引号 32. 隐藏 PHP 33. 保持更新 V. 特点 34. 用 PHP 进行 HTTP 认证 35. Cookie 36. 会话 37. 处理 XForms 38. 文件上传处理 39. 使用远程文件 40. 连接处理 41. 数据库永久连接 42. 安全模式 43. PHP 的命令行模式 VI. 函数参考 I. .NET 函数 II. Apache 特有函数 III. Alternative PHP Cache IV. Advanced PHP debugger V. Array 数组函数 VI. Aspell 函数(已废弃) VII. BC math 高精度数学函数 VIII. PHP bytecode Compiler IX. Bzip2 压缩函数 X. Calendar 日历函数 XI. CCVS API Functions [deprecated] XII. Classes/Objects 类/对象函数 XIII. Classkit Functions XIV. ClibPDF Functions XV. COM 和 .Net(Windows)函数 XVI. Crack Functions XVII. Character Type Functions XVIII. CURL, Client URL Library Functions XIX. Cybercash Payment Functions XX. Credit Mutuel CyberMUT functions XXI. Cyrus IMAP administration Functions XXII. Date/Time 日期/时间函数 XXIII. DB++ Functions XXIV. Database (dbm-style) Abstraction Layer Functions XXV. dBase Functions XXVI. DBM Functions [deprecated] XXVII. dbx Functions XXVIII. Direct IO Functions XXIX. Directory 目录函数 XXX. DOM Functions XXXI. DOM XML Functions XXXII. Error Handling and Logging Functions XXXIII. Exif Functions XXXIV. Expect Functions XXXV. File Alteration Monitor Functions XXXVI. Forms Data Format Functions XXXVII. filePro Functions XXXVIII. Filesystem 文件系统函数 XXXIX. Firebird/InterBase Functions XL. Firebird/Interbase Functions (PDO_FIREBIRD) XLI. FriBiDi Functions
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值