PDO简单介绍:
背景:随着php使用的广泛,使用不同数据库也是十分常见的。php需要支持更多的数据库连接接口,如果只是通过单一的接口针对单一的数据库进行编写程序,这很大程度上提升了php的复杂度和学习门槛。PDO的出现就是为了解决这个问题。
PDO:PDO是php data Object的缩写,为php访问数据库定义了轻量级的、一致性的接口。它提供了一个数据访问抽象层,不管php连接的是什么数据库都可以通过一致的函数执行查询和获取数据。PDO在php5.1发行时开始附带,php之前的版本不支持PDO的类库
特性:
(1)灵活性,可以在php运行期间,直接加载新的数据库而不需要在新的数据库使用时,重新设置和编译。
(2)面向对象性:通过对象来控制数据库的使用。
(3)速度快,由于PDO是用C语言编写且编译进php的,所以比那些用php编写的抽象类快得多。
PDO的安装:
由于PDO类库是php5自带的类库,所以使用PDO类库只需要在php.ini中把关于PDO类库的配置前面的注释符号去掉。首先启用extension=php_pdo.dll类库,这个类库是PDO类库本身。然后根据需要开启不同数据库驱动类库。比如mysql数据库的驱动类是extension=php_pdo_mysql.dll。
PDO操作mysql数据库:
PDO的构造函数实现php连接数据:new PDO( DSN , username , password , driver_options )
其中,DSN是一个数据源名称,它由数据库服务器类型、数据库服务器地址、数据库名组成,格式如下:
'数据库服务器类型:host=数据库服务器地址;dbname=数据库名'
username是接入数据源的用户名,password是用户密码,driver_options是特定连接要求的其他参数,可选。
PDO连接mysql数据库和执行SQL选择语句的实例:
getMessage();
}
$sql = "select * from test";
$result = $db->query($sql);
$rowcount = $result->rowCount();
echo "查询到".$rowcount."条";
$rows = $result->fetchAll();
foreach ($rows as $row) {
var_dump($row);
}
?>
getMessage();
}
$sql = "select * from test";
$result = $db->query($sql);
$rowcount = $result->rowCount();
echo "查询到".$rowcount."条";
while($row = $result->fetch(PDO::FETCH_ASSOC)){
var_dump($row);
}
?>
PDO执行SQL添加、修改、删除语句的实例,执行这些语句时都是通过exce()来实现,而选择语句不能:
getMessage();
}
$sqlinsert = "insert into test(name,id) values('sam',3)";
$sqlupdate = "update test set name='jack' where name='sam'";
$sqldelete = "delete from test where name='jack'";
if($db->exec($sqlinsert)){
echo "insert success";
}
if($db->exec($sqlupdate)){
echo "update success";
}
if($db->exec($sqldelete)){
echo "delete success";
}
?>
PDO的prepare使用
使用情景:频繁使用的sql语句结构都相同,如经常使用insert,仅每一项具体的数值都不同。prepare表述可提供改变的变量值,不改变sql语句,以减少解析过程、节省资源、提高效率。
使用prepare表述需要通过两个方法:一个是prepare()方法,另一个是execute()方法。
<?php
try{
$db = new PDO('mysql:host=localhost;dbname=test','root','djr');
}catch(PDOException $e){
echo "Connection error message:".$e->getMessage();
}
$sqlinsert = "insert into test set id=:id,name=:name";
$preparedb = $db->prepare($sqlinsert);
if($preparedb->execute(array(
":id" => "111",
":name" => "jenen dunran"
))){
echo "insert success";
}
?>