本文作者:心月

PDO连接数据库的3种方式

心月IT博客 03-25
PDO连接数据库的3种方式摘要:PDO 一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。那么pdo具体支持哪些数据库操作呢?PDO支持的数据库驱动名称支持的数据库PDO CUBRIDCubridPDO DBLIBFreeTDS Microsoft SQL Server SybasePDO FIREBIRFirebird Interbase 6PDO IBMIBM DB2PDO INFORMIXIBM Informix Dynamic ServerPDO

PDO 一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。那么pdo具体支持哪些数据库操作呢?

PDO支持的数据库

驱动名称支持的数据库
PDO CUBRIDCubrid
PDO DBLIBFreeTDS/Microsoft SQL Server/ Sybase
PDO FIREBIRFirebird/Interbase 6
PDO IBMIBM DB2
PDO INFORMIXIBM Informix Dynamic Server
PDO MYSQLMySQL 3.x/4.x/5.x
PDO CIOracle Call Interface
PDO ODBCODBC V3(IBM DB2, uniXODBC and win32 ODBC)
PDO PGSQLPostgreSQL
PDO SQLITESQLite及 SQLite2
PDO SOLSRVMicrosoft SQL Server /SQL Azure
PDO 4D4D


    我们在做php项目的时候都知道,要操作数据库必先连接数据库,那么PDO是如何连接数据库的呢?这里我们以——mysql 为例。

在使用pdo之前我们要先配置,将pdo扩展引入,否则无法使用。

//(在php.ini文件中开启此扩展,#这一步在 PHP 5.3及更高版本中不是必须的,对于 PDO 不再需要做为一个 DLL 文件。)
extension=php_pdo.dll

然后在php.ini文件中找到具体数据库的扩展,将其注释去掉,比如这里我们要用pdo操作mysql数据库,因此我们要在php.ini文件中找到mysql的pdo扩展,并将其注释去掉:

开启mysql 的pdo扩展

然后重启Apache,接下来就可以用pdo mysql扩展操作mysql数据库了。

PDO连接mysql的3种方式:

1、通过参数形式连接数据库

<?php 
//通过参数形式连接数据库
try{
        //数据源,要连接什么数据库,数据库地址,数据库名
	$dsn='mysql:host=localhost;dbname=test';
	//数据库账号
	$username='root';
	//数据库密码
	$passwd='root';
	$pdo=new PDO($dsn, $username, $passwd);
	var_dump($pdo);
}catch(PDOException $e){
	echo $e->getMessage();
}

通过参数的形式连接数据库

    数据库连接成功,var_dump会打印出一个PDO对象,如果连接失败catch会捕获到错误信息并输出:

pdo连接数据库异常捕获

在后面的方法中就不在展示连接错误示例了。


2、通过URI形式连接数据库

把dsn数据源信息写入文件中,然后通过引入这个文件连接数据库

<?php 
//通过uri的形式连接数据库
try{
	$dsn='uri:file://D:\phpstudy\WWW\test\pdo\dsn.txt';
	$username='root';
	$passwd='root';
	$pdo=new PDO($dsn,$username,$passwd);
	var_dump($pdo);
}catch(PDOException $e){
	echo $e->getMessage();
}
#dsn.txt 文件配置信息
mysql:dbname=test;host=localhost

通过uri的形式连接数据库


3、通过配置文件形式连接数据库

<?php 
try{
	$dsn='test';
	$username='root';
	$passwd='root';
	$pdo=new PDO($dsn,$username,$passwd);
	var_dump($pdo);
}catch(PDOException $e){
	echo $e->getMessage();
}
pdo.dsn.test="mysql:host=localhost;dbname=test"

通过配置文件连接数据库的时候,如果用调试工具调试可能会报invalid data source name,但在浏览器中执行是没有问题的,这个不是pdo的问题,应该是调试工具的问题。

通过配置文件形式连接数据库


pdo与mysql(php5.2版本),pdo与mysqli(php5.5版本)效率对比

<?php 
header('content-type:text/html;charset=utf-8');
//1.通过PDO连接数据库
$pStartTime=microtime(true);
for($i=1;$i<=100;$i++){
	$pdo=new PDO('mysql:host=localhost;dbname=test','root','root');
}
$pEndTime=microtime(true);
$res1=$pEndTime-$pStartTime;

//2.通过MySQL连接数据库
$mStartTime=microtime(true);
for($i=1;$i<=100;$i++){
	// mysqli
	// mysqli_connect('localhost','root','root','test');
	//mysql
	mysql_connect('localhost','root','root');
	mysql_select_db('test');
}
$mEndTime=microtime(true);
$res2=$mEndTime-$mStartTime;
// echo 'pdo耗时'.$res1,'<br/>mysqli耗时',$res2;
echo 'pdo耗时'.$res1,'<br/>mysql耗时',$res2;
echo '<hr/>';
// echo 'PDO连接数据库MySQLi的'.round($res1/$res2).'倍';
echo 'PDO连接数据库MySQL的'.round($res1/$res2).'倍';

pdo与mysql,pdo与mysqli效率对比

虽然在同等条件下连接数据库pdo的耗时远大于mysql的耗时,但自php5.5以后已不在用mysql,而改为mysqli,而在同等条件下连接数据库pdo的耗时跟mysqli的耗时差不多。

文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 03-25
若转载请注明原文及出处:https://www.xinyueseo.com/other/211.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 2 条评论,人围观)参与讨论
    网友昵称:飘过
    飘过游客11-15回复
    文章不错,写的很好! 有程序还有运行结果,很受用
    网友昵称:心月IT博客
    心月IT博客博主2019-11-15回复
    飘过多谢朋友对本站的支持!