賈素來(lái)
(無(wú)錫商業(yè)職業(yè)技術(shù)學(xué)院,江蘇 無(wú)錫 214153)
使用PHP和MySQL開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站
賈素來(lái)
(無(wú)錫商業(yè)職業(yè)技術(shù)學(xué)院,江蘇 無(wú)錫 214153)
PHP技術(shù)和MySQL數(shù)據(jù)庫(kù)是開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站的最佳組合。文章介紹了PHP和MySQL的基本知識(shí)和優(yōu)點(diǎn),介紹了使用PHP和MySQL開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站的過(guò)程和關(guān)鍵技術(shù)。
PHP; MySQL;動(dòng)態(tài)網(wǎng)站
隨著Internet/Intranet技術(shù)的發(fā)展及其在企事業(yè)單位中的廣泛運(yùn)用,網(wǎng)站作為信息資源發(fā)布和共享的平臺(tái),在企事業(yè)單位的日常事務(wù)中起著越來(lái)越重要的作用。相比較于其它動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)技術(shù),PHP(Professional Hypertext Preprocessor)技術(shù)和 MySQL數(shù)據(jù)庫(kù)有著不少的優(yōu)點(diǎn),是開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站的最佳組合。
1.PHP簡(jiǎn)介
PHP與微軟的 ASP(Active Server Pages)頗有幾分相似,都是一種在服務(wù)器端執(zhí)行的,嵌入HTML文檔的腳本語(yǔ)言,語(yǔ)言的風(fēng)格類似于 C語(yǔ)言,現(xiàn)在被很多的網(wǎng)站編程人員廣泛的運(yùn)用。PHP腳本在WEB服務(wù)器端的運(yùn)行方式是,當(dāng)WEB服務(wù)器收到一個(gè)WEB頁(yè)面請(qǐng)求時(shí),若請(qǐng)求的是HTML文件,則WEB服務(wù)器直接把文件提供給瀏覽器顯示;若請(qǐng)求的是以“.php”為擴(kuò)展名的文件,則WEB服務(wù)器先傳給PHP執(zhí)行引擎,對(duì)兩個(gè)PHP分界符號(hào)之間的PHP程序進(jìn)行分析,然后再根據(jù)程序運(yùn)行時(shí)各種不同的條件將PHP程序轉(zhuǎn)換為相應(yīng)的HTML代碼返回給客戶端的瀏覽器顯示。PHP獨(dú)特的語(yǔ)法混合了C、Java、Perl 以及PHP自創(chuàng)新的語(yǔ)法,可以比CGI或者Perl更快速的執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。
PHP、ASP和JSP都是目前Internet/Intranet上流行的動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)技術(shù)。與ASP、JSP相比,使用PHP開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站具有如下一些優(yōu)勢(shì)。
(1)PHP同JSP(Java Server Pages)類似,幾乎可以運(yùn)行于所有的平臺(tái)?!癢rite Once,Run Anywhere”準(zhǔn)確地描述了這一特性。雖然,現(xiàn)在 WINDOWS系列操作系統(tǒng)占了很大的市場(chǎng)份額,但是在服務(wù)器方面Unix的優(yōu)勢(shì)仍然很明顯,而新崛起的 Linux更是來(lái)勢(shì)不小。ASP在這一方面的逆勢(shì)明顯可見(jiàn)。
(2)PHP具有十分強(qiáng)大的數(shù)據(jù)庫(kù)操作功能,可直接連接多種數(shù)據(jù)庫(kù),并完全支持 ODBC(Open Database Connectivity)。PHP含有相當(dāng)豐富的函數(shù)庫(kù),只需借助某一個(gè)或某幾個(gè)函數(shù)即可完成上載文件、存取數(shù)據(jù)庫(kù)中的二進(jìn)制圖片數(shù)據(jù)、作圖、XML解析等功能。
(3)PHP具有先進(jìn)的擴(kuò)展功能。PHP不但內(nèi)置了對(duì)文件上傳、密碼認(rèn)證、郵件收發(fā)、動(dòng)態(tài) GIF生成等功能的支持,還極有遠(yuǎn)見(jiàn)的提供了對(duì)GZIP文件、PDF、XML的直接支持,同時(shí)用戶還可以編寫(xiě)自己的擴(kuò)展模塊或從網(wǎng)上下載別人編寫(xiě)的其它模塊、基庫(kù),給將來(lái)的擴(kuò)展提供了極大的空間。
(4)PHP是面向?qū)ο蟮?,并且吸收了C/C++/Java/PERL的精華。PHP是用C寫(xiě)成的,語(yǔ)法簡(jiǎn)單,書(shū)寫(xiě)容易。
另外,1995年,PHP2.0發(fā)布時(shí)被定名為 PHP/FI(Form Interpreter),加入了對(duì)MySQL的支持。這就使PHP在訪問(wèn)MySQL時(shí)不需安裝額外的驅(qū)動(dòng)程序,使用起來(lái)方便,訪問(wèn)速度也比較快。
2.MySQL簡(jiǎn)介
MySQL是一個(gè)健壯、快速和易用,且支持多線程、多用戶的數(shù)據(jù)庫(kù)服務(wù)器。與其他的大型數(shù)據(jù)庫(kù),例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限等,但是MySQL是免費(fèi)的,并且具有許多同大型數(shù)據(jù)庫(kù)相媲美甚至超過(guò)它們的優(yōu)良性能。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來(lái)說(shuō),MySQL提供的功能已經(jīng)綽綽有余。同時(shí)由于開(kāi)放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。MySQL數(shù)據(jù)庫(kù)的開(kāi)發(fā)得到了很多著名廠商和技術(shù)團(tuán)隊(duì)的支持,是目前基于Unix、
Linux系統(tǒng)開(kāi)發(fā)WEB應(yīng)用程序中很熱門(mén)的數(shù)據(jù)庫(kù)系統(tǒng)。
目前 Internet上流行的網(wǎng)站構(gòu)架方式是 LAMP(Linux+Apache+MySQL+PHP),即使用Linux作為操作系統(tǒng),Apache作為WEB服務(wù)器,MySQL作為數(shù)據(jù)庫(kù),PHP作為服務(wù)器端腳本解釋器。Apache和MySQL及PHP彼此之間結(jié)合緊密、使用方便,均可運(yùn)行于Linux、Unix、Windows等多種操作系統(tǒng)。相比于IIS(Internet Information Services),Apache還具有更高的安全性、低廉的價(jià)格等優(yōu)勢(shì)。另外,由于這四個(gè)軟件都是遵循GPL(General Public License)的開(kāi)放源碼軟件,因此使用這種方式不用花一分錢(qián)就可以建立起一個(gè)穩(wěn)定、免費(fèi)的網(wǎng)站系統(tǒng)。
下面就來(lái)簡(jiǎn)述使用PHP和MySQL開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站的全過(guò)程。由于使用習(xí)慣的原因,這個(gè)地方的系統(tǒng)環(huán)境為 windows XP sp2,PHP選用 php-5.2.9-2-Win32.zip,MySQL選用 MySQL-5.0.18-win32.zip,Apache選用 Apache_2.2.11-win32-x86-openssl-0.9.8i.msi。
1.PHP和MySQL的安裝配置
PHP的安裝配置有 CGI和模塊化安裝兩種不同模式。在CGI模式下,如果客戶機(jī)請(qǐng)求一個(gè)php文件,WEB服務(wù)器就會(huì)調(diào)用 php.exe去解釋這個(gè)文件,然后再把解釋的結(jié)果以網(wǎng)頁(yè)的形式返回給客戶機(jī)顯示。而在模塊化安裝模式中,PHP是與WEB服務(wù)器一起啟動(dòng)并運(yùn)行的,所以有著比CGI模式更好的安全性以及更好的執(zhí)行效率和速度。
這里將PHP5以模塊化安裝模式安裝配置在Apache下運(yùn)行。將PHP5安裝包解壓縮到“C:PHP5”目錄下。解壓縮MySQL安裝包到任意目錄,點(diǎn)擊“setup.exe”文件安裝,按照提示安裝即可。在配置 MySQL時(shí)注意選擇數(shù)據(jù)庫(kù)的字符集為 GBK或GB2312以使數(shù)據(jù)庫(kù)能夠正確顯示中文。
軟件安裝完后,下面就是配置了。在 PHP5目錄下找到“php.ini-dist”文件,將之改名為“php.ini”,并將其復(fù)制到Apache安裝目錄下。修改Apache目錄下的“php.ini”文件:查找“extension_dir”,將其路徑修改為“C:PHP5ext”;查找“display_errors”值修改為“on”;查找“php_gd2.dll”去掉前面的分號(hào);查找“cgi.force_redirect”把分號(hào)去掉,值改為 0;查找“session.save_path”把“/tmp”改為“C:PHP5 mp”,然后在PHP5目錄下建一個(gè)文件夾,文件夾名為“tmp”,去掉前面的分號(hào);在 PHP5目錄中查找“php5ts.dll”,并將其復(fù)制到windows目錄下;查找“php5Apache2_2.dll”(Apache版本是 2.2),復(fù)制到Apache目錄下的 modules目錄下。打開(kāi)Apache安裝目錄下conf目錄下的配置文件“http.conf”,在文件末尾,另起一行輸入“l(fā)oadmodule php5_module modules/php5Apache2_2.dll”;再另起一行輸入“addtype application/x-httpd-php .php”。重新啟動(dòng)Apache服務(wù)器,PHP5在Apache下的安裝配置就完成了。
下面配置php5以支持MySQL數(shù)據(jù)庫(kù)。打開(kāi)Apache安裝目錄下的php.ini文件:查找“extension=php_MySQL.dll”,去掉前面的分號(hào);查找“MySQL.default_port = ”,值改為MySQL的端口號(hào)(3306);查找“MySQL.default_host =”,值改為“l(fā)ocalhost”;查找“MySQL.default_user=”,值寫(xiě)為 root;查找“MySQL.default_password =”,值改為 root用戶的密碼;在php5目錄中查找libMySQL.dll,并將其復(fù)制到windows/system32目錄下。重新啟動(dòng)Apache服務(wù)器,PHP對(duì)MySQL的支持配置就完成了。
2.使用PHP訪問(wèn)MySQL數(shù)據(jù)庫(kù)
PHP最強(qiáng)大、最有意義的特性是提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)接口,支持大范圍的數(shù)據(jù)庫(kù),可直接與 Informix、Oracle、Sybase、PostgreSQL、MySQL、Access等連接。但PHP提供的數(shù)據(jù)庫(kù)接口支持彼此不統(tǒng)一,比如對(duì)Oracle、MySQL、Sybase的接口,彼此都不一樣,這也是PHP的一個(gè)弱點(diǎn)。PHP還支持ODBC接口的數(shù)據(jù)庫(kù),可訪問(wèn)幾乎所有的數(shù)據(jù)庫(kù)。以下是 PHP訪問(wèn)MySQL數(shù)據(jù)庫(kù)的兩種方法。
(1)PHP使用數(shù)據(jù)庫(kù)函數(shù)方法訪問(wèn)MySQL數(shù)據(jù)庫(kù)
在函數(shù)支持方面,PHP幾乎覆蓋了WEB應(yīng)用的各個(gè)方面,其中最有特色的是數(shù)據(jù)庫(kù)函數(shù)。在對(duì)MySQL數(shù)據(jù)庫(kù)的操作上,PHP一共有32個(gè)函數(shù)可供操作。這些函數(shù)包括了MySQL的各個(gè)方面,包括操作 MySQL數(shù)據(jù)庫(kù),連接數(shù)據(jù)服務(wù)器,選擇數(shù)據(jù)庫(kù),發(fā)送 SQL查詢的函數(shù)等等。以下介紹了幾個(gè)要用到主要函數(shù)。
連接數(shù)據(jù)庫(kù)的函數(shù):mysql_connect(“l(fā)ocalhost”,“user”,“password”)。參數(shù)“l(fā)ocalhost”是安裝 MySQL服務(wù)器的計(jì)算機(jī)的IP地址或主機(jī)名,參數(shù)“user”是有訪問(wèn)數(shù)據(jù)庫(kù)權(quán)限的用戶ID,參數(shù)“password”是用戶的口令。
選擇數(shù)據(jù)庫(kù)的函數(shù):mysql_select_db(“mydb”)。參數(shù)“mydb”是數(shù)據(jù)庫(kù)名。
執(zhí)行SQL查詢的函數(shù):mysql_query(“query”,$link):參數(shù)“query”是一個(gè)包含要執(zhí)行的查詢的字符串,參數(shù)“$link”是mysql_connect()函數(shù)的返回值。
從查詢的結(jié)果集中取出數(shù)組的函數(shù):mysql_fetch_array($result,[MySQL_ASSOC])。參數(shù)“$result”是 mysql_query()函數(shù)的返回值,參數(shù)MySQL_ASSOC可選,表示關(guān)聯(lián)索引。
斷開(kāi)連接的函數(shù):mysql_close($link)。參數(shù)“$link”是mysql_connect()函數(shù)的返回值。
(2)PHP使用ODBC方法訪問(wèn)MySQL數(shù)據(jù)庫(kù)
雖然PHP通過(guò)ODBC支持幾乎所有的數(shù)據(jù)庫(kù),但對(duì)于開(kāi)發(fā)數(shù)據(jù)驅(qū)動(dòng)的網(wǎng)站而言,選擇 MySQL應(yīng)該說(shuō)是最佳組合。主要用到以下幾個(gè)函數(shù)。
連接 ODBC 數(shù)據(jù)庫(kù)的函數(shù):odbc_connect(“dsn”,“user”,“password”)。參數(shù)“dsn”為ODBC數(shù)據(jù)庫(kù)名稱,參數(shù)“user”及“password”分別為鏈接的帳號(hào)及密碼。
執(zhí)行SQL查詢的函數(shù):odbc_do ($link,“query”)。參數(shù)“$link”是odbc_connect()函數(shù)的返回值,參數(shù)“query”則為要執(zhí)行的SQL語(yǔ)句。
取得數(shù)據(jù)的函數(shù):odbc_result($result,“field”)。參數(shù)“$result”是odbc_do()函數(shù)的返回值,“field”是字段索引值。
關(guān)閉數(shù)據(jù)連接的函數(shù):odbc_close($link)。參數(shù)“$link”是odbc_connect()函數(shù)的返回值。
目前,動(dòng)態(tài)網(wǎng)站的開(kāi)發(fā)是研究的熱點(diǎn)之一。PHP是一種簡(jiǎn)單、高效的動(dòng)態(tài)腳本編程語(yǔ)言,具有跨平臺(tái)、強(qiáng)大的數(shù)據(jù)庫(kù)支持等優(yōu)點(diǎn),MySQL是一個(gè)免費(fèi)、健壯、快速,支持多線程、多用戶的數(shù)據(jù)庫(kù)服務(wù)器,并且PHP內(nèi)置了對(duì)MySQL的支持,同時(shí)PHP與MySQL都是免費(fèi)的,是動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)的最佳組合。
[1] 賈素來(lái).常見(jiàn)動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)比較[J].大眾科技,2008(9).
[2] 易競(jìng).PHP訪問(wèn) MySQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)[J].保險(xiǎn)職業(yè)學(xué)院學(xué)報(bào),2008,22(3).
[3] 王宏濤,羅正才.用 Apache&MySQL&PHP構(gòu)建高校教務(wù)管理系統(tǒng)[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2004,22(2).
[4] PHP在 WINXP下如何安裝. http://blog.sina.com.cn/s/blog_4b2fd935010007s0.html.2007-02-07
[5] 王逾西.動(dòng)態(tài)網(wǎng)頁(yè)的數(shù)據(jù)庫(kù)連接技術(shù)[J].天津市財(cái)貿(mào)管理干部學(xué)院學(xué)報(bào),2010(1).
TP391
A
1008-1151(2011)03-0014-02
2010-08-08
賈素來(lái)(1979-),男,無(wú)錫商業(yè)職業(yè)技術(shù)學(xué)院信息工程系講師,研究方向?yàn)檐浖こ?、信息系統(tǒng)設(shè)計(jì)。