什么是PDO及怎么使用

PDO

一、基本知识

1)为什么要使用PDO

我们的数据库服务器为MYSQL,所有的程序代码的数据库操作全是以mysql函数来操作,当我们的数据库系统需要更换时,比如换成SQLSERVER2008 ,我们怎么办呢?修改所有的程序代码吗?

当数据库需要迁移时,使用PDO操作将非常方便,只需要修改数据源格式,和加载相应的驱动文件到PHP.ini即可

 

2)什么是PDO

PDO是PHP data Object 提供了PHP操作多种数据库的统一的接口

3PDO的特点?

编码的一致行:由于PHP可用的各种数据库扩展是由不同发行者编写的,所以尽管所有扩展都提供了基本相同的特性,却不满足编码的一致性。PDO消除了这种不一致,提供可用于各种数据库的单一接口。

灵活性:因为PDO在运行时加载必需的数据库驱动程序,所以不需要在每次使用不同数据库时重新配置和重新编译PHP。例如,如果数据库需要从Oracle切换到MySQL,只要加载PDO_MYSQL驱动程序就可以了。

面向对象特性:PDO利用PHP5的面向对象特性,可以获得更强大、更高效的数据库通信。

高性能:PDO用C编写,编译为PHP,与用PHP编写的其他解决方案相比,虽然其他都相同,但提供了更高的性能。

4PDO的配置

1)修改PHP.ini , 添加MYSQL的PDO扩展

[PHP_PDO_MYSQL]

extension=php_pdo_mysql.dll

2)扩展目录中要有相应的扩展文件

 

 3PDO连接不同的数据库,要有不同的数据库驱动文件即我们所加入配置文件的扩展

 4)重新启动APACHE,使配置生效

 

5)数据源配置的格式

数据源格式:

1$dsn = 'mysql:dbname=testdb;host=127.0.0.1';

 $user = 'dbuser';

   $password = 'dbpass';

2)声明对象:

   $dbh = new PDO($dsn, $user, $password);

查询的方法,查手册

   (6各个方法的讲解

<?php

//(1)连接数据库

//语法:$dsn="数据库类型:dbname=数据库名;host=数据库的域名"

$dsn="mysql:dbname=1309phpB;host=127.0.0.1";

//数据库的用户名

$user="root";

//数据库的密码

$psw="123456";

//生成PDO的对象

$pdo=new PDO($dsn,$user,$psw);

 

//执行添加

//$insertsql="insert into student(name,age) values('zhangsan',20)";

//if($pdo->exec($insertsql)){

// echo "添加成功";

//}

 

//总结:exec主要用于执行没有返回结果集的操作,比如insert delete update,返回的是影响的记录条数

 

//执行查询

$sql="select * from student";

$result=$pdo->query($sql);

//query()执行查询语句,返回结果集对象

//用循环利用fetch方法逐个的取出记录,返回的是关联数组和索引数组两种数组,和mysql_fetch_array()的返回结果一致

while($rows=$result->fetch()){

//print_r($rows);

}

 

//fetchAll()方法可以一次取出结果集中所有的数组,以二维数组的形式返回

//$data=$result->fetchAll();

//print_r($data);

//总结查询方式一

//PDO::query($sql),利用PDO来执行sql语句

//PDOstatement::fetch()或者PDOstatement::fetch()来取结果集的数据

//查询方式二

//PDO::prepare($sql),利用PDO来预执行sql语句

//PDOstatement::execute() 执行预处理

//PDOstatement::fetch()或者PDOstatement::fetch()来取结果集的数据

$res=$pdo->prepare($sql);//预处理

if($res->execute()){//执行预处理

$array=$res->fetchAll();

}

print_r($array);

 

 

//总结三

//PDO::lastInsertId():是返回上次插入操作,主键列类型是自增的最后的自增ID

    //PDOStatement::rowCount() :主要是用于PDO::query()PDO::prepare()进行DELETEINSERTUPDATE操作影响的结果集,对PDO::exec()方法和SELECT操作无效。

?>

 

(7)PDO中事务的使用

(8)TP支持PDO

return array(  

‘DB_TYPE’=> ‘pdo’,  

// 注意DSN的配置针对不同的数据库有所区别 请参考PHP手册PDO类库部分  

‘DB_DSN’=> ‘mysql:host=localhost;dbname=think’,  

‘DB_USER’=>’root’,  

‘DB_PWD’=>”,  

‘DB_PREFIX’=>’think_’,  

// 其他项目配置参数………  

 

    ); 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值