PHP數據庫開發-在不同的數據庫連接方式中選擇

PHP數據庫開發-在不同的數據庫連接方式中選擇
1Apache/php的配置參見前面文章

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模塊;

安裝過程:

 

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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章