我们为什么要使用PDO进行PHP程序开发?
PDO扩展为PHP定义了一个访问数据库的轻量的,持久的接口。实现了PDO接口的每一种数据库驱动都能以正则扩展的形式把他们各自的特色表现出来。注意;利用PDO扩展本身并不能实现任何数据库函数。你必须使用一个特定的数据库PDO驱动去访问数据库。
PDO提供了一个数据访问抽象层,这就意味着,不管你使用的是哪种数据库,你都可以用同样的函数去进行查询的获取数据。PDO并不提供数据提取,它不会重写SQL语句,或者模仿这些功能。你需要使用一个成熟的提取层,如果你需要的话。怎么样,是不是看了译文就有一种恍然大悟的感觉了?
没有?
那说的再详细点。
我们为什么要使用PDO?
1、更换数据库时取得极大便利
在PHP4/3时代,PHP要利用php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等扩展来连接MySQL、PostgreSQL、MS SQL Server、SQLite,这其实也没什么。也就是在配置时多添句话就行了。
可怕的是,这些扩展和各自对应的数据库打交道时,他们各自的函数有很多是不一样的。
比如:
PHP利用libmysql.dll和MYSQL打交道时,如果要从数据表中提取数据作为关联数组,用的是mysql_fetch_accoc,而如果要从postgre数据库取得同样的结果,你就不得不用pg_fetch_assoc。
很简单的例子说明了很重要的问题,假如你要更换数据库类型,比如从MYSQL更换成POSTGRE,你就不得把你所有和数据库有关的程序都改一遍。这时候,你应该会明白,为什么我不用PDO??
2、极大提高程序运行效率
针对上面的情况,也许你会说,我可以使用ADODB(LITE),PEAR::db来实现对不同类型数据库函数的封装啊。这样子,即使我更换数据库,也不需要修改程序。
答:php代码的效率怎么能够和直接用C/C++写的扩展效率比较呢?根本不是一个数量级的。
OK,从现在开始用PDO进行你的开发吧。
<?php <br />$hostname = "localhost"; //指定主机名
$database = "db_book"; //指定数据库名称
$usernmae = "root"; //指定用户名
$password = "44444"; //指定密码
$dsn = "mysql:dbname=" . $database . ";host=" . $hostname;
//数据源描述
try {
$conn = new PDO($dsn,$usernmae,$password);
//创建PDO对象 参数 : 数据源,用户名,密码
}
catch (PDOException $e) {
echo "Connecting failed: " . $e->getMessage();
//抛出异常
}
$sql = "select * from tb_books";
//查询字符串
echo "
"; //使用文本格式输出
$conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); //使用小写键名 UPPER就是大写
$rs = $conn->prepare($sql);
//这个函数我理解应该是个用来建立类似持久连接的函数吧
$rs->execute();
//这是一个可以带参数的函数,可使用变量替换查询时语句的特定标识
//如果不带参数则直接执行语句
//可以提高查询效率 具体看参考手册的介绍 PDO Functions 章节
while ($row = $rs->fetch(PDO::FETCH_ASSOC)) {
//FETCH_ASSOC 是限定返回的结果只有 关联字段名 否则会同时返回 字段序号和关联字段名
//浪费资源,使用关联字段名易于操作,同 mysql_fetch_assoc
print_r($row);
};
echo "";
?>
页:
[1]