浅析PHP 数据库抽象层(PDO)数据对象详解

第一次接触pdo,百度了一下,原来此方法还挺方便的,pdo在PHP6中默认使用此方式连接,mysql扩展将被作为辅助 PDO(PHP Data Object):扩展库为PHP访问数据库定义了一个轻量级的,一致性的接口。
优点:使用不同的数据库,都可以统一通过一致的函数执行查询和获取数据,并能够屏蔽不同数据库间的差异,方便移植。
图解:
pdo
程序中构造:PDO主要扩展+相应PDO数据库驱动程序

PDO主要扩展:

1 php_pdo.dll

相应PDO数据库驱动程序及数据库列表:


pdo驱动

1.配置,安装

LINUX下:
1.自 PHP 5.1.0 起,PDO 和 PDO_SQLITE 驱动默认可用。对于自己选择的数据库,需要启用相应的 POD 驱动; 查阅 特定数据库的 PDO 驱动 文档获取更多此内容。
Windows 用户:
1.PDO 和所有主要的驱动作为共享扩展随 PHP 一起发布,要激活它们只需简单地编辑 php.ini 文件:

1 extension=php_pdo.dll

2.选择其他具体数据库的 DLL 文件,将前面的;去掉即可

01 extension=php_pdo.dll
02 extension=php_pdo_firebird.dll
03 extension=php_pdo_informix.dll
04 extension=php_pdo_mssql.dll
05 extension=php_pdo_mysql.dll
06 extension=php_pdo_oci.dll
07 extension=php_pdo_oci8.dll
08 extension=php_pdo_odbc.dll
09 extension=php_pdo_pgsql.dll
10 extension=php_pdo_sqlite.dll

那些 DLL 文件应该在系统的extension_dir 中存在。
官方安装解读:http://www.php.net/manual/zh/pdo.installation.php

2、PDO连接mysql数据库

连接数据库,需要创建PDO对象,所以解释一下PDO构造方法的:


1 __counstrcut(string $dsn[,string $username[,string $password[, array $driver_options]]])

参数说明:
$dsn 数据源名称,用来定义一个确定的数据库和必须用到的驱动程序。
$username 用户名
$password 用户密码
$driver_option 连接数据选项(下面)

开始引入一下连接数据选项,组成以选项名为键值的关联数组。作为第四个参数。

选项名 描述
PDO::ATTR_AUTOCOMMIT 确定PDO是否关闭自动提交功能,设置false为关闭
PDO::ATTR_CASE 强制PDO获取的表字段字符的大小写转换,或原样使用列信息
PDO::ATTR_ERRMODE 设置错误处理模式(下面详解)
PDO::ATTR_PERSISTENT 确定连接是否为持久连接,默认为false
PDO::ATTR_ORACLE_NULLS 将返回的空字符串转换为SQL的NULL
PDO::ATTR_PREFETCH 设置应用程序提前获取的数据大小,以K字节为单位
PDO::ATTR_TIMEOUT 设置超时之前等待的时间(秒数)
PDO::ATTR_SERVER_INFO 包含于数据库特有的服务器信息
PDO::ATTR_SERVER_VERSION 包含于数据库服务器版本号有关的信息
PDO::ATTR_CLIENT_VERSION 包含于数据库客户端版本号有关的信息
PDO::ATTR_CONNECTION_STATUS 包含数据库特有的与连接状态有关的信息

Cubrid数据库连接:

1 $conn_str ="cubrid:dbname=demodb;host=localhost;port=33000";
2 $cubrid_pdo = new PDO($conn_str, 'dba', '');

FreeTDS / Microsoft SQL Server / Sybase数据库连接:

1 $hostname = "host"; //host
2 $dbname = "dbname"; //db name
3 $username = "user"; // username like 'sa'
4 $pw = "pass"; // password for the user
5 $dbh = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");

Firebird/Interbase 6数据库:

1 $db = new PDO ("firebird:dbname=localhost:C:\\path\\to\\database\\MyDatabase.FDB", "username", "password");

Oracle数据库:

1 $db_username = "youusername";
2 $db_password = "yourpassword";
3 $db = "oci:dbname=yoursid";
4 $conn = new PDO($db,$db_username,$db_password);

等等。。其他的详情请参考官方:http://www.php.net/manual/zh/pdo.drivers.php

连接完后成也可以使用setAttribute()函数设置上面介绍的选项表中的值
比如设置错误模式:db->setAttribute(PDO::ATTR_ERrmODE, PDO::ERrmODE_EXCEPTION);//设置抛出异常处理错误

比如设置PDO::ATTR_ORACLE_NULLS:db->setAttribute(PDO::ATTR_ORACLE_NULLS, true);//设置true后,通过$db对象打开的任何语句中的空字符串将被转换为NULL

这里引出一下PDO的错误处理模式:
3种不同的错误处理模式

错误处理模式 描述
PDO::ERRMODE_SILENT 此为默认模式。在错误发生时不进行任何操作, PDO 将只简单地设置错误码。开发人员可以通过PDO对象中的errofCode()和errorInfo()方法对语句和数据库对象进行检查。如果错误时由于 对语句对象的调用而产生,那么可以在那个语句对象上调用errofCode()和errorInfo()方法;如果错误时由于调用数据库对象而产生的,那 么可以在那个数据库对象上调用上述两个方法
PDO::ERRMODE_WARNING 除设置错误码之外,PDO 还将发出一条传统的 E_WARNING 信息。如果只是想看看发生了什么问题且不中断应用程序的流程,那么此设置在调试/测试期间非常有用。
PDO::ERRMODE_EXCEPTION 除设置错误码之外,PDO 还将抛出一个 PDOException 异常类并设置它的属性来反射错误码和错误信息。此设置在调试期间也非常有用,因为它会有效地放大脚本中产生错误的点,从而可以非常快速地指出代码中有问题 的潜在区域(记住:如果异常导致脚本终止,则事务被自动回滚)。异常模式另一个非常有用的是,相比传统 PHP 风格的警告,可以更清晰地构建自己的错误处理,而且比起静默模式和显式地检查每种数据库调用的返回值,异常模式需要的代码/嵌套更少。

附带上官方对错误模式的解释:http://www.php.net/manual/zh/pdo.error-handling.php

往下将以mysql为主介绍

PDO连接mysql数据库


1 $dbh = new PDO("mysql:host=localhost;dbname=db_demo","root","password");

默认不是持久连接,若要使用数据持久连接,需要在最后加如下参数:

1 $dbh = new PDO("mysql:host=localhost;dbname=db_demo","root","password","array(PDO::ATTR_PERSISTENT => true) ");
2 $dbh = null; //(关闭数据库连接)

一个完整的例子


你可能感兴趣的:(windows,linux,数据库,object,百度)