PHP
数据库开发
-
在不同的数据库连接方式中选择
注
1
:
Apache/php
的配置参见前面文章
注
2
:
Dbg
调试和
Zend Debugger
调试不能同时执行,即
php.ini
中不能同时启用,切换
Zend Studio
和
PhpED
开发工具是,必须切换相应的
debugger
配置。
PHP
连接数据库包括四种连接方式
1、
函数调用
2、
对象调用方式
3、
Perl DB
4、
主流数据库抽象层介绍(供参考)
[
本节内容来自“
PHP5
与MySQL5 Web
开发技术详解
”
]
第
1
种方式不再推荐使用,笔记
OOP
方式已经成为主流,虽然
PHP5
向后兼容。
Pear DB-
这是一个以
PEAR
为基础的数据库抽象层;虽然
PHP
已经有内建的数据库函式,不过功能有限,而且不容易转移平台。例如通常连接
MySQL
的函式是
mysql_connect()
,而
PostgreSQL
则是
pg_connect()
,虽然你大可将
mysql_[x]
改成
pg_[x]
,不过如果你的数据库抽象层的源码超过
500
行的话这将是一个恶梦!如果你的数据库函式是散布在你的源码,那就更恐怖了。所以,这时候需要有一个跨平台的数据库界面抽象层来为你完成大部分的工作,包括连接,
query
,
update
等等,而且还需要提供
debug
的功能。
PEAR DB
正是一个这样的工具,提供多种平台包括
dbase, Frontbase, InterBase, Informix, MiniSQL, MSSQL, MySQL, Oracle, ODBC, PostgreSQL, SQLite, Sybase
。
PEAR DB
可以完全作为一个
PHP
程序的数据库层,而且速度也很理想(当然不比直接用
mysql_query
来得快,不过在大型的程序中可以凸现它的效果),所有的功能都包含在三个类型中,用法也很简单。
包括Pear DB
,目前,有4
种主流数据库抽象层:Metabase
、PEAR:DB
、PDO
及ADODB
。从目前的应用来看,ADODB
和PEAR:DB
最受欢迎(因为PEAR
是被捆绑在PHP
目录中的,但PEAR:DB
的效率问题一直引人诟病)。
从PHP 5
开始出现的PDO
及ADODB
(其中包括PDO
、MySQLi
的底层实现)已经逐渐普及。
也有一些更新的抽象类值得一用,PEAR:MDB
(现在的版本名称为PEAR:MDB2
)已经将Metabase
和PEAR:DB
合并,并且效率较之从前有很大的提高。
函数调用
<?php
$link=mysql_connect('localhost','root','root', 'test');
if(!$link) echo "fail";
else echo "success";
mysql_close();
?>
对象调用
<?php
$mysqli = new mysqli("localhost", "root", "root","test");
if (mysqli_connect_errno()) {
die("mysqli_connect failed: " . mysqli_connect_error());
}
print "connected to " . $mysqli->host_info . "\n";
$mysqli->close();
?>
使用Pear DB
关于Pear
PEAR
是
PHP Extension and Application Repository
(
PHP
扩展与应用库)的缩写。
PEAR
为
PHP
用户提供了一套基本类库,在编写
PHP
程序时通过调用相关的
PEAR
类可以简化我们的工作量。举个很简单的例子,比如我在程序中想把数据库中的数据通过
Web
页面的条件设定,抽取相应的数据转存到
Excel
表格里。要完成这个任务,在以前可不是很容易办到的,还好现在有了
PEAR
,通过调用
PEAR
里面的
Spreadsheet
类,我们可以在很短的时间实现对
Excel
的写操作。长话短说,还是开始尽快我们的
PEAR
安装之旅吧。
安装Pear和Pear DB(确保计算机联上互联网)
1
、安装
Pear
在命行下到
php
目录下
(
d:\myamp\PHP5.2.9
)
,运行
go-pear.bat
(其内容其实为
cliphp.exe -d output_buffering=0 PEARgo-pear.php )
它会给你安装
pear
命令和安装一些
pear
包,此包内不含
db
模块;
安装过程:
2
、安装
Pear DB
步骤
1
执行完成之后,
pear
会安装在
d:\myamp\PHP5.2.9
目录,在命令行进入该目录,运行:
pear install db
5、
确认
d:\myamp\Apache2.2\bin\php.ini
配置文件的
include_path
包含
pear
路径
include_path = ".;D:\myamp\PHP5.2.9\PEAR; "
使用Pear DB访问数据库
<?php
//
需要安装
pear db
require_once 'DB.php';
$dbh = DB::connect("mysql://root:root@localhost/test");
if (DB::isError($dbh)) {
print "Connect failed!\n";
print "Error message: " . $dbh->getMessage() . "\n";
print "Error details: " . $dbh->getUserInfo() . "\n";
exit(1);
}
print "Connect ok!\n";
?>
--------------------------------------------------
以下内容供参考
----------------------------------------------
4、主要数据库抽象层介绍
4.1 PEAR:DB
PEAR:DB
自
2001
年以来,存在于
PEAR
中,由于
PEAR
默认绑定在
PHP
目录中,基于这些原因,成为比较流行的数据库抽象层。
PEAR:DB
所支持的数据库系统包括:
Ø Firebird
Ø Interbase
Ø Informix
Ø mSQL
Ø MS SQL Server
Ø MySQL
Ø Oracle
Ø ODBC
Ø PostgreSQL
Ø SQLite
Ø Sybase
PEAR:DB
的下载地址:
[url]http://pear.php.net/package/DB/download[/url]
。
4.2 ADODB
ADODB
(
Active Data Objects DataBase
),起源于
2000
年,到目前为止仍然在增强与更新,发展至今仍然是一个热门的数据抽象层。
ADODB
的开发初衷,源于很多从
Microsoft ASP
或
ADO
转过来的工程师,很多用法与
MS ADO
非常相像,目前使用
ADODB
的流行软件,例如
egroupware
、
Mambo
等均采用
ADODB
。
ADODB
的数据库封包程序库提供了共通的应用程序界面来跟所有支持的数据库沟通,值得一提的是,它除了支持
PHP
,还支持
Python
语言。
ADODB
提供很多实用的方法,使它超越了一个抽象层的功能,如具有表格化和数据库缓存等非常好的特性。
ADODB
支持的数据库系统包括:
Ø Access
Ø ADO
Ø DB2
Ø Firebird
Ø FoxPro
Ø FrontBase
Ø Informix
Ø Interbase
Ø LDAP
Ø MS SQL Server
Ø MySQL
Ø ODBC
Ø Oracle
Ø PostgreSQL
Ø SAP DB
Ø SQLite
Ø Sybase
另外,因为
ADODB
的逐渐发展,特性增强,使得本身体积过大,为此
ADODB
开发团队还提供了基本功能的
ADO Lite
。
4.3 Metabase
Metabase
由
Manuel Lemons
开发。
Metabase
已被誉为慢抽象层,但是它支持
PHP
的全部版本,也是目前提供最大的可移植性设计的唯一抽象层。目前支持的数据库系统包括:
Ø Access
Ø Informix
Ø Interbase
Ø mSQL
Ø MS SQL Server
Ø MySQL
Ø ODBC
Ø Oracle
Ø PostgreSQL
Ø SQLite
下载地址:
[url]http://www.phpclasses.org/browse/package/20.html#download[/url]
。
4.4 MDB
SCMV-MDB
的性能介于和融合
PEAR:DB
、
Metabase
数据库抽象层之间,它的初衷就是试图改善性能和最大可移植性。稳定版于
2004
年
4
月发布。
MDB
目前支持的数据库系统包括:
Ø Firebird
Ø Frontbase
Ø Interbase
Ø MS SQL Server
Ø MySQL
Ø Oracle
Ø PostgreSQL
Ø Querysim
PEAR:MDB
下载地址:
[url]http://pear.php.net/package/MDB/download[/url]
。
4.5 MDB2
PEAR:MDB2
把
Metabase/PEAR:DB
合并,并在
SCMV-MDB
的基础上进一步巩固,以及去除不必要的冗余工作。另外,它还整合了与
PDO
的接口。
PEAR:MDB2
目前支持的数据库系统包括:
Ø Firebird
Ø Frontbase
Ø Interbase
Ø MS SQL Server
Ø MySQL
Ø Oracle
Ø PostgreSQL
Ø Querysim
Ø SQLite
PEAR:MDB2
下载地址:
[url]http://pear.php.net/package/MDB/download[/url]
。
4.6 Creole
Creole
是基于
Java
的
JDBC
技术,在某种程度上是
PEAR:DB
、
PEAR: MDB2
和
ADODB
的结合体。
Creole
是
PHP 5
上较新的数据抽象层,与
PHP 4
不兼容。
Creole
提供充分的面向对象开发的
API
,以及
PHP 5
的异常处理机制。
Creole
目前支持的数据库系统包括:
Ø MySQL
Ø MS SQL Server
Ø Oracle
(
in progress
)
Ø PostgreSQL
Ø SQLite
Creole
库的下载地址:
[url]http://creole.phpdb.org/wiki/index.php?node=2[/url]
。
4.7 PDO
PDO
数据抽象层是随着
PHP 5.1
推出的,
PDO
使用
C
语言编写,因为是与
PHP
同级的
API
,所以它的执行速度快。
PDO
目前支持的数据库系统包括:
Ø Firebird
Ø FreeTDS
Ø Interbase
Ø MySQL
Ø MS SQL Server
Ø ODBC
Ø Oracle
Ø PostgreSQL
Ø SQLite
Ø Sybase
PDO
必须运行在
PHP 5.1
及以上版本上。
4.8 PHPLib
到目前为止,
PHPLib
已经使用了近
6
年,只是因为它曾经是非常受欢迎的数据库类,它在设计时并不是一个数据库抽象层,而只用于概括连接串、查询和处理错误和封装。
因为它小巧方便,加载速度快,现在使用这个类作为数据库层查询的
PHP
项目也为数不少。
PHPLib
的官方网站为:
[url]http://phplib.sf.net[/url]
。