Q4:如何使用PHP数据对象(PDO)扩展连接操作数据库?
所谓的PDO,就是php中内嵌的一个数据对象。不论什么类型的数据库连接,都可初始化为一个PDO对象,然后再使用该对象中所定义的各种方法来查询和获取数据,这样就为不同的数据库定义了一个轻量级的一致接口。
该功能自php5.1版本开始使用,但并不是每个版本默认都开通了的。现以目前使用最广泛的两个php版本为例:
在5.6版本中,php_pdo_odbc是作为扩展功能提供的。如果不选择使用此扩展,odbc方式连接正常,但以odbc方式初始化一个pdo对象时就会出错。使用phpinfo()查看,如下图:
在7.0版本中,情况完全与5.6相反:php_pdo_odbc默认就是开通的,obdc却被关闭。
当然,如果你仅仅只是要通过PDO连接MySQL数据库,就无需关注上述问题。只有在连接MySQL之外的其它数据库时才需关注上述扩展的开通情况,比如Access、MSSQL之类。
下面重点说一下如何通过PDO连接不同的数据库。
一般情况下,我在php中连接MySQL数据库时喜欢使用mysqli_connect函数,连接微软系列数据库时喜欢使用odbc_connect函数。为了后期的数据统一操作,它们都可以改用pdo方式连接:该方式其实就是将各种不同类型的数据库连接,都初始化为一个PDO对象,然后再使用该对象中所定义的各种方法来查询和获取数据。初始化对象时,如果有任何的连接错误,都将抛出一个PDOException异常对象,我们还可以据此获取相关的错误信息。
例如,通过pdo创建mysql的数据库连接:
try {
$link = new PDO(mysql:host=localW&WW.ecAibEi.CoMhost;dbname=test,root,);
} catch (PDOException $e) {
$str = 连接失败!错误信息: .$e->getMessage();
exit($str);
}
echo 数据库连接成功!;
如果要连接MSSQL,可将$link改为:
$link = new PDO(odbc:Driver={SQL Server};Server=.\sqlexpress;database=gz,sa,123456);
很显然,不论什么数据库的连接,当创建PDO对象时,都少不了以下三个参数:第一个参数是dsn,用于指定驱动程序及数据库;第二个参数是用户名;第三个参数是密码。连接Access或Excel同理。
例如,以下就是连接的Access:
$file = realpath(data.mdb);
$link = new PDO(odbc:Driver={Microsoft Access Driver (*.mdb)};dbq=.$file,,);
以下是连接Excel文件的:
$file = realpath(data.xls);
$link = new PDO(odbc:Driver={Microsoft Excel Driver (*.xls)};dbq=.$file,,);
以上用户名、密码参数为空时,也可直接省略,只写第一个参数就行。
PDO对象创建之后,就可以使用该对象中的方法来获取数据或更新数据了。既然题主问的是如何连接,此回答就到此为止。
我是人民邮电出版社签约作者,最近写的一本书《B/S项目开发实战》中就详细讲解了PDO操作数据库的具体方法,甚至连中文数据表、中文字段的问题都进行了详细说明。如对此类问题有兴趣,请关注我一起交流提高,谢谢!