PHP数据库开发-在不同的数据库连接方式中选择
1Apache/php的配置参见前面文章<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

2Dbg调试和Zend Debugger调试不能同时执行,即php.ini中不能同时启用,切换Zend StudioPhpED开发工具是,必须切换相应的debugger配置。

PHP连接数据库包括四种连接方式
1、  函数调用
2、  对象调用方式
3、  Perl DB
4、  主流数据库抽象层介绍(供参考)[本节内容来自“PHP5MySQL5 Web开发技术详解]
1种方式不再推荐使用,笔记OOP方式已经成为主流,虽然PHP5向后兼容。
Pear DB-这是一个以PEAR为基础的数据库抽象层;虽然PHP已经有内建的数据库函式,不过功能有限,而且不容易转移平台。例如通常连接MySQL的函式是mysql_connect(),而PostgreSQL则是pg_connect(),虽然你大可将mysql_[x]改成pg_[x],不过如果你的数据库抽象层的源码超过500行的话这将是一个恶梦!如果你的数据库函式是散布在你的源码,那就更恐怖了。所以,这时候需要有一个跨平台的数据库界面抽象层来为你完成大部分的工作,包括连接,queryupdate等等,而且还需要提供debug的功能。PEAR DB正是一个这样的工具,提供多种平台包括dbase, Frontbase, InterBase, Informix, MiniSQL, MSSQL, MySQL, Oracle, ODBC, PostgreSQL, SQLite, SybasePEAR DB可以完全作为一个PHP程序的数据库层,而且速度也很理想(当然不比直接用mysql_query来得快,不过在大型的程序中可以凸现它的效果),所有的功能都包含在三个类型中,用法也很简单。
包括Pear DB,目前,有4种主流数据库抽象层:MetabasePEAR:DBPDOADODB。从目前的应用来看,ADODBPEAR:DB最受欢迎(因为PEAR是被捆绑在PHP目录中的,但PEAR:DB的效率问题一直引人诟病)。

PHP 5开始出现的PDOADODB(其中包括PDOMySQLi的底层实现)已经逐渐普及。

也有一些更新的抽象类值得一用,PEAR:MDB(现在的版本名称为PEAR:MDB2)已经将MetabasePEAR: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
PEARPHP Extension and Application RepositoryPHP扩展与应用库)的缩写。PEARPHP用户提供了一套基本类库,在编写PHP程序时通过调用相关的PEAR类可以简化我们的工作量。举个很简单的例子,比如我在程序中想把数据库中的数据通过Web页面的条件设定,抽取相应的数据转存到Excel表格里。要完成这个任务,在以前可不是很容易办到的,还好现在有了PEAR,通过调用PEAR里面的Spreadsheet类,我们可以在很短的时间实现对Excel的写操作。长话短说,还是开始尽快我们的PEAR安装之旅吧。
安装PearPear DB(确保计算机联上互联网)
1、安装Pear

在命行下到php目录下(d:\myamp\PHP5.2.9),运行go-pear.bat(其内容其实为cliphp.exe -d output_buffering=0 PEARgo-pear.php )它会给你安装pear命令和安装一些pear包,此包内不含db模块;

安装过程:

 
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

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:DB2001年以来,存在于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
ADODBActive Data Objects DataBase),起源于2000年,到目前为止仍然在增强与更新,发展至今仍然是一个热门的数据抽象层。
ADODB的开发初衷,源于很多从Microsoft ASPADO转过来的工程师,很多用法与MS ADO非常相像,目前使用ADODB的流行软件,例如egroupwareMambo等均采用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
MetabaseManuel 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:DBMetabase数据库抽象层之间,它的初衷就是试图改善性能和最大可移植性。稳定版于20044月发布。
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:MDB2Metabase/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是基于JavaJDBC技术,在某种程度上是PEAR:DBPEAR: MDB2ADODB的结合体。
CreolePHP 5上较新的数据抽象层,与PHP 4不兼容。Creole提供充分的面向对象开发的API,以及PHP 5的异常处理机制。
Creole目前支持的数据库系统包括:
Ø  MySQL
Ø  MS SQL Server
Ø  Oraclein 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]