PDO

 
  

POD

1 为什么要使用POD?

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

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

2 什么是PDO

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

3 PDO的特点?

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

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

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

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

4 PDO的配置

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

[PHP_PDO_MYSQL]

extension=php_pdo_mysql.dll

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

 

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

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

 

5)数据源配置的格式

5 数据源配置的格式

数据源格式:

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

 $user = 'dbuser';

   $password = 'dbpass';

2)声明对象:

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

查询的方法,查手册

6 各个方法的讲解

//(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操作无效。

?>



你可能感兴趣的:(总结,总结)