php與mysql3日通-首天
發(fā)表時(shí)間:2023-08-19 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]一、PHP/MySQL簡(jiǎn)介 您應(yīng)該聽(tīng)說(shuō)過(guò)開(kāi)放源代碼軟件(OSS),除非最近六到八個(gè)月來(lái)您一直住在火星上。這場(chǎng)運(yùn)動(dòng)有著巨大的沖擊力,已引起一些大公司的注意。象Oralce、Informix,還有多家...
一、PHP/MySQL簡(jiǎn)介
您應(yīng)該聽(tīng)說(shuō)過(guò)開(kāi)放源代碼軟件(OSS),除非最近六到八個(gè)月來(lái)您一直住在火星上。這場(chǎng)運(yùn)動(dòng)有著巨大的沖擊力,已引起一些大公司的注意。象Oralce、Informix,還有多家公司都開(kāi)始把他們的主力數(shù)據(jù)庫(kù)產(chǎn)品移植到OSS的產(chǎn)物之一 - Linux操作系統(tǒng)上。
如果您有足夠的技術(shù)力量,擁有一個(gè)復(fù)雜龐大的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)(RDBMS)則是如虎添翼。但是也許您對(duì)數(shù)據(jù)庫(kù)還剛剛?cè)腴T(mén),您剛剛讀了Jay的文章,決定自己也來(lái)搞一個(gè)數(shù)據(jù)驅(qū)動(dòng)的網(wǎng)站。可是您也許會(huì)發(fā)現(xiàn)您缺乏必要的資源來(lái)運(yùn)行ASP服務(wù)器或昂貴的數(shù)據(jù)庫(kù)系統(tǒng)(您也不需要這些東西)。您需要一些免費(fèi)的、支持Unix的東西。
那么我建議您使用PHP和MySQL。這兩樣?xùn)|西加在一起,對(duì)于開(kāi)發(fā)數(shù)據(jù)驅(qū)動(dòng)的網(wǎng)站這項(xiàng)工作而言,真是最佳組合。其實(shí)用不著我多費(fèi)唇舌解釋。一項(xiàng)由Netcraft組織的非官方調(diào)查顯示,應(yīng)用PHP的主機(jī)數(shù)目由1998年6月的7,500臺(tái)躍升至1999年3月的410,000臺(tái)。不錯(cuò)吧?這兩種軟件的組合還在Webcon98大會(huì)上贏得了年度數(shù)據(jù)庫(kù)產(chǎn)品大獎(jiǎng),還得了一座漂亮的獎(jiǎng)杯。
MySQL是一個(gè)小巧靈瓏的數(shù)據(jù)庫(kù)服務(wù)器軟件,對(duì)于小型(當(dāng)然也不一定很。⿷(yīng)用系統(tǒng)是非常理想的。除了支持標(biāo)準(zhǔn)的ANSI SQL語(yǔ)句,它還支持多種平臺(tái),而在Unix系統(tǒng)上該軟件支持多線程運(yùn)行方式,從而能獲得相當(dāng)好的性能。對(duì)于不使用Unix的用戶,它可以在Windows NT系統(tǒng)上以系統(tǒng)服務(wù)方式運(yùn)行,或者在Windows 95/98系統(tǒng)上以普通進(jìn)程方式運(yùn)行。
PHP是一種服務(wù)器端解釋的腳本語(yǔ)言。如果你接觸過(guò)ASP的話,那么您對(duì)于在HTML頁(yè)面中嵌入代碼應(yīng)該是比較熟悉了。PHP代碼在服務(wù)器一端被解釋轉(zhuǎn)變成普通的HTML頁(yè)面內(nèi)容,送給瀏覽器一端。這種模式使得我們可以用它來(lái)完成相當(dāng)復(fù)雜的功能。
除了免費(fèi)這一點(diǎn)(當(dāng)然,MySQL也有一些使用許可方面的限制),PHP-MySQL的組合還可以跨平臺(tái)運(yùn)行,這意味著您可以在Windows上開(kāi)發(fā),然后在Unix平臺(tái)上運(yùn)行。另外,PHP也能作為標(biāo)準(zhǔn)的CGI進(jìn)程來(lái)運(yùn)行,此時(shí)它是一個(gè)獨(dú)立的腳本解釋器,或者是Apache的一個(gè)嵌入模塊。
如果您有興趣使用其他數(shù)據(jù)庫(kù)服務(wù)器的話,PHP也支持Informix、Oracle、Sybase、Solid和PostgreSQL ,以及通用的ODBC。
PHP支持Internet開(kāi)發(fā)的一些前沿技術(shù)。這些技術(shù)包括身份認(rèn)證、XML、動(dòng)態(tài)圖象生成、WDDX、共享內(nèi)存,以及動(dòng)態(tài)PDF文檔等等,不一而足。如果您還不滿意的話,PHP是很容易擴(kuò)展的,所以只要您有編程能力,您盡可以自己大展身手一番。
最后要說(shuō)的是,兩種軟件都是大量程序員協(xié)同開(kāi)發(fā)的,因此文檔及郵件列表等支持方式很多。程序錯(cuò)誤的修正很快,而如果您要求加入新功能的話,總會(huì)有人考慮您的要求,并且在可行性足夠高的前提下加以實(shí)現(xiàn)。
說(shuō)得夠多了!我們來(lái)看看這篇教程里都有些什么內(nèi)容吧。
第一課講的是在Unix和Windows環(huán)境下安裝這兩個(gè)軟件。如果您不太關(guān)心這個(gè)問(wèn)題(也許您是在ISP的服務(wù)器上開(kāi)發(fā)),您可以直接跳到第一個(gè)示例程序,從那里開(kāi)始您的奇妙之旅。
在第二課里,我們要學(xué)習(xí)一些更加復(fù)雜的腳本功能,比如循環(huán)、處理用戶輸入,以及與數(shù)據(jù)庫(kù)交換數(shù)據(jù)等等。
第三課要講的是確認(rèn)功能,以及如何使您的腳本程序清晰簡(jiǎn)練。
我們開(kāi)始吧。>>
二、安裝MySQL
快點(diǎn)行動(dòng),拿到這些軟件包,仔細(xì)研究一下吧。這可不是件容易的事兒。你從獲取軟件包、編譯軟件包到安裝軟件包的過(guò)程中都有不少的選擇項(xiàng)。我們先從MySQL開(kāi)始,因?yàn)橛辛怂拍苓\(yùn)行PHP。
MySQL中央網(wǎng)站是http://www.mysql.com/。為了方便人們下載使用(這軟件還是比較大的),全球有許許多多的鏡像網(wǎng)站。為更有效地利用因特網(wǎng),請(qǐng)找一個(gè)就近的網(wǎng)站下載。
在這時(shí)候你也會(huì)有多種選擇。如果你是發(fā)燒友的話,可以下載源代碼;否則,網(wǎng)上也有各種平臺(tái)上運(yùn)行的預(yù)先編譯過(guò)的二進(jìn)制文件可以直接下載。
另外,MySQL還為Windows用戶準(zhǔn)備了一個(gè)共享軟件版本,它的版本號(hào)稍低一些。如果你想要最新的版本,得花錢(qián)買(mǎi)一個(gè)軟件許可。MySQL還提供了ODBC驅(qū)動(dòng)程序,使前端應(yīng)用程序可以訪問(wèn)MySQL數(shù)據(jù)庫(kù)。有關(guān)其他一些詳細(xì)信息在它的網(wǎng)站上都有得介紹,您可以去看看。
預(yù)先編譯過(guò)的Unix版本和Windows版本都很簡(jiǎn)單,只須解包即可使用,不需要做太多說(shuō)明了。因此,我們來(lái)介紹一下源代碼的編譯。Windows用戶請(qǐng)記住,您需要運(yùn)行mysqld程序,該程序是在mysql/bin目錄下。
下載壓縮過(guò)的軟件包文件,放在一個(gè)目錄下。使用gzip和tar來(lái)解壓縮和解包。比較快的做法是使用下面這樣的命令:
gunzip < mysql-xxxx.tar.gz tar xvf -
其中,xxxx是你自己任取的一個(gè)版本標(biāo)記。上面的命令將創(chuàng)建一個(gè)名為mysql-xxxx目錄,所有的源程序文件都在這個(gè)目錄下。通過(guò)執(zhí)行cd mysql-xxxx命令轉(zhuǎn)入該目錄,仔細(xì)閱讀其中的多個(gè)README文件INSTALL文件。在遇到某些問(wèn)題時(shí),這些文件可能會(huì)幫上大忙呢。
MySQL帶有一些便利的配置腳本程序。只須簡(jiǎn)單地鍵入./configure,您就可以讓這些程序?yàn)槟瓿珊芏喙ぷ。如果您需要明確指定要做的事情,可以使用./configure -help命令,它會(huì)給您列出你可以使用的選項(xiàng)。例如,如果您正在一臺(tái)內(nèi)存較少的機(jī)器上進(jìn)行編譯,那么可以使用--with-low-memory選項(xiàng)。我喜歡把MySQL安裝在一個(gè)總目錄下,而不是安裝在機(jī)器上多個(gè)目錄下,所以我會(huì)指定安裝目錄,并指定-prefix選項(xiàng)。
您還可以指定許多其他選項(xiàng),象編譯過(guò)程中要略掉哪些部分、保留哪些部分等。我們不妨假定要全部安裝在服務(wù)器的/usr/local/mysql目錄下。這意味著我們將鍵入./configure -prefix=/usr/local/mysql命令。
配置腳本程序運(yùn)行時(shí)會(huì)檢查您的系統(tǒng),然后生成一些文件來(lái)保證編譯的順利進(jìn)行。如果該腳本程序失敗,它也會(huì)顯示一些有用的錯(cuò)誤信息告訴您失敗的原因。大家經(jīng)常會(huì)遇到腳本程序在尋找多線程庫(kù)文件時(shí)失敗。此時(shí)您應(yīng)當(dāng)檢查一下系統(tǒng)中是否已經(jīng)安裝了MIT-pthreads,如果沒(méi)有,那么請(qǐng)您安裝該軟件。Linux用戶則必須安裝LinuxThreads。這些庫(kù)文件對(duì)于MySQL的多線程運(yùn)行模式(也就是運(yùn)行它自己的多個(gè)版本〕是非常關(guān)鍵的。
如果一切都順利進(jìn)行的話,只須簡(jiǎn)單鍵入make命令,然后就可以去泡杯咖啡了。MySQL是相當(dāng)復(fù)雜的程序,編譯起來(lái)得用一段時(shí)間。如果發(fā)現(xiàn)錯(cuò)誤,可以檢查文檔,看看只否您漏掉了某些與您的操作系統(tǒng)有關(guān)的準(zhǔn)備工作。
接下來(lái),鍵入make install命令,所有必需的文件都會(huì)安裝到相應(yīng)的目錄。您差不多就可以開(kāi)始使用了!如果您是MySQL新手,以前從未安裝過(guò)MySQL,那您得創(chuàng)建默認(rèn)的許可權(quán)限才能安裝,因此請(qǐng)鍵入...scripts/mysql_install_db來(lái)進(jìn)行相應(yīng)的設(shè)置。
就這樣。我們的準(zhǔn)備工作完成了。再下面所要做的就是在機(jī)器啟動(dòng)時(shí)自動(dòng)啟動(dòng)數(shù)據(jù)庫(kù),并在關(guān)機(jī)時(shí)自動(dòng)關(guān)閉數(shù)據(jù)庫(kù)。是的,這項(xiàng)工作也有一個(gè)專門(mén)的腳本程序。mysql.server start命令可以啟動(dòng)數(shù)據(jù)庫(kù),而mysql.server stop可以關(guān)閉數(shù)據(jù)庫(kù)。實(shí)在是再簡(jiǎn)單不過(guò)了。如果您想手動(dòng)啟動(dòng)數(shù)據(jù)庫(kù)(這樣就不用重啟機(jī)器了),你以進(jìn)到安裝MySQL的最上層目錄(/usr/local/mysql)然后鍵入bin/safe_mysqld &命令。
我們已經(jīng)完成了一半了。接下來(lái)是PHP部分。>>
三、安裝PHP
好,看到這里時(shí),希望您已經(jīng)把MySQL安裝好并運(yùn)行起來(lái)了。那實(shí)在是太有意思了!下面是PHP...這個(gè)過(guò)程要容易一些,不過(guò)那些大量的選項(xiàng)還是使人眼花繚亂。當(dāng)然,您大可不必驚慌。您隨時(shí)可以重頭再來(lái),重新編譯PHP,根據(jù)需要來(lái)加入或去掉某個(gè)選項(xiàng)。
PHP的老家在http://www.php.net/。這個(gè)網(wǎng)站信息量極大,從開(kāi)發(fā)項(xiàng)目?jī)?nèi)容到軟件錯(cuò)誤報(bào)告都有。和MySQL一樣,您可以選一個(gè)離您最近的鏡像網(wǎng)站下載。很顯然,您得到網(wǎng)站的Downloads部分去下載PHP。
這里您的選擇不是很多。有一些預(yù)選編譯好的二進(jìn)制文件,但那都是實(shí)驗(yàn)性的。如果您不是在Windows平臺(tái)上,那就下載源代碼,自己編譯一下吧。
但是我們還是先談?wù)刉indows。在使用PHP時(shí),一般的作法是在Windows系統(tǒng)上開(kāi)發(fā),然后在Unix服務(wù)器上運(yùn)行。您最終可能也會(huì)選擇這種方式,這就需要您對(duì)兩種平臺(tái)下的安裝都很熟悉才行。
下載Windows二進(jìn)制文件后,您可以用您喜歡的任何一種ZIP解壓縮程序,把軟件包中的文件解壓到C盤(pán)的php3目錄下。軟件包中的README文件對(duì)安裝過(guò)程中的細(xì)節(jié)作了部分說(shuō)明,但是我們?cè)谶@里再對(duì)這個(gè)文件中的關(guān)鍵內(nèi)容做個(gè)讀者文摘:如果您不想把PHP安裝在C:\php3目錄,而是別的目錄,那么您得編輯解壓縮出來(lái)的文件中那個(gè).inf文件。
在php3目錄中,您會(huì)發(fā)現(xiàn)很多.dll文件。把所有文件名不是以php_開(kāi)頭的那些.dll文件都移到\windows\system目錄下。然后,把php.ini-dist文件改一下名,改成php3.ini,并把它移到\windows目錄下。如果您打開(kāi)這個(gè)文件,會(huì)發(fā)現(xiàn)里面有很多有趣的東西可以改,F(xiàn)在,把含有:
extension=php3_mysql.dll
內(nèi)容的那一行的注釋去掉。
如果您使用的是Win32平臺(tái)上的Apache服務(wù)器,那么請(qǐng)?jiān)O(shè)置Apache,使其能夠識(shí)別并解釋PHP文件。您需要在http.conf文件或是srm.conf文件(具體是哪一個(gè)文件取決于您使用的Apache軟件的版本)中加入下一行:
Action application/x-httpd-php3 "php3/php.exe"
AddType application/x-httpd-php3 .php3
或者,如果您使用的是IIS,那么請(qǐng)用鼠標(biāo)右鍵單擊php_iis_reg.inf文件,并選擇“安裝”。您得重新啟動(dòng)系統(tǒng),才能使剛才所做的改動(dòng)生效。
OK,說(shuō)完了Windows,再來(lái)說(shuō)說(shuō)Unix。當(dāng)然,我們要從源代碼開(kāi)始編譯。與MySQL相似,把源文件下載、解包。PHP也同樣包含一個(gè)配置腳本程序,可是您不能完全使用默認(rèn)設(shè)置。運(yùn)行./configure -help more命令,可以逐頁(yè)地觀看有哪些新的、有趣的選項(xiàng)。您必須選擇是把PHP編譯成外部CGI程序還是Apache內(nèi)嵌模塊。如果您正在使用Apache Web服務(wù)器,并且您可以對(duì)它進(jìn)行重新編譯的話,請(qǐng)選擇內(nèi)嵌模塊方式,這種方式運(yùn)行更快,使用也更簡(jiǎn)便。否則,您可以選CGI方式。另外,您還得指定將對(duì)MySQL的支持部分編譯進(jìn)去。
現(xiàn)在我們假定要以內(nèi)嵌模塊方式編譯,并帶有MySQL支持部分。如果隨后您需要增加其他選項(xiàng)或庫(kù)文件的話,可以在以后再加進(jìn)去。鍵入下面的命令:
./configure -with-apache=/path/to/apache/dir -with-mysql=/usr/local/mysql
如果您打算以外部CGI程序方式來(lái)編譯的話,請(qǐng)去掉-with-apache選項(xiàng)。配置程序運(yùn)行起來(lái)后,會(huì)創(chuàng)建相應(yīng)的系統(tǒng)文件。接下來(lái)簡(jiǎn)單地執(zhí)行make命令就行了。
又可以喝一杯咖啡了。如果您在此時(shí)感到坐立不安的話,不必?fù)?dān)心。每個(gè)人在初次安裝PHP的時(shí)候都有一點(diǎn)近不及待的感覺(jué)。再多喝點(diǎn)咖啡就是了。
如果您選擇CGI程序方式來(lái)編譯,那么現(xiàn)在可以就可以使用了。只須把產(chǎn)生的可執(zhí)行文件復(fù)制到CGI程序目錄下就行了。如果您使用Apache內(nèi)嵌模塊方式來(lái)編譯,要再執(zhí)行一下make install命令,把有關(guān)文件復(fù)制到Apache目錄下。在該目錄下,您可以按照Apache的文檔說(shuō)明,向其中加入PHP模塊,并重新編譯Apache。
現(xiàn)在您得告訴Web服務(wù)器如何通過(guò)PHP程序來(lái)處理頁(yè)面內(nèi)容。如果您使用的不是Apache,那您需要查閱Web服務(wù)器軟件的文檔,看看如何讓它處理后綴是.php3的文件。Apache 1.3.x版本的用戶僅須在httpd.conf或srm.conf文件中加入:AddType application/x-httpd-php3 .php3。如果您使用的是CGI程序方式,那您在AddType前面還得加入下面內(nèi)容:
Action application/x-httpd-php3 "php3/php.exe
就是這樣。您的運(yùn)氣還不那么差,現(xiàn)在MySQL也運(yùn)行起來(lái)了,PHP也工作正常了。別忘了,在遇到問(wèn)題時(shí)可以去查閱常見(jiàn)問(wèn)題解答和軟件文檔。還可以試試電子郵件討論組。
既然我們已經(jīng)進(jìn)行了這么多,下面我們可以實(shí)際操練了。>>
四、第一個(gè)腳本
如果我告訴您真正難過(guò)的一關(guān)已經(jīng)過(guò)了,您一定會(huì)很高興。軟件的安裝過(guò)程總是無(wú)法預(yù)料,因?yàn)橄到y(tǒng)跟系統(tǒng)之間可以說(shuō)是千差萬(wàn)別。不過(guò)您運(yùn)氣不錯(cuò),數(shù)據(jù)庫(kù)運(yùn)行起來(lái),PHP也編譯安裝完畢,Web服務(wù)器也可以正確處理擴(kuò)展名為.php3的文件了。
我們下面就開(kāi)始正式上路,要寫(xiě)第一個(gè)腳本程序了。創(chuàng)建一個(gè)文本文件,在其中加入下面的內(nèi)容:
<html>
<body>
<?php
$myvar = "Hello World";
echo $myvar;
?>
</body>
</html>
現(xiàn)在,訪問(wèn)相應(yīng)的URL,例如,http://myserver/test.php3。您應(yīng)該可以看到頁(yè)面中包含“Hello World”的文字。如果您看到的是錯(cuò)誤信息,查一下PHP文檔,看看軟件設(shè)置是否正確無(wú)誤。
就是這樣了!這是您的第一個(gè)PHP程序。如果您查看一下這個(gè)頁(yè)面的HTML源代碼,您會(huì)發(fā)現(xiàn)里面只有Hello World 這樣的文字。
那是因?yàn)镻HP引擎過(guò)濾了文件內(nèi)容,對(duì)其中的代碼作了處理,轉(zhuǎn)換成了標(biāo)準(zhǔn)的HTML。
在上面的程序中您最先注意到的可能是定界符,也就是?lt;?php開(kāi)始的那幾行。這個(gè)標(biāo)記說(shuō)明后面是PHP代碼,而?>表示代碼結(jié)束。PHP的強(qiáng)大之處在于,這些代碼可以以多種不同方式放在任意位置 - 我是說(shuō)任意位置。后面我們會(huì)看到一些很有趣的例子,現(xiàn)在我們還是從最簡(jiǎn)單的開(kāi)始。如果您愿意,也可以設(shè)置PHP,讓它使用短標(biāo)記,<?和?>,但這與XML會(huì)發(fā)生沖突,所以要小心使用。如果您是從ASP轉(zhuǎn)向PHP,您甚至可以讓PHP使用<%和%>作為定界符。
您還會(huì)注意到每行后面的分號(hào)。這些分號(hào)稱為分隔符,用于分隔不同的指令。您可以把所有的PHP代碼寫(xiě)在一行里,用分隔符把命令分開(kāi)。但是那樣看起來(lái)很亂,所以我們?cè)诿總(gè)分號(hào)后面都另起一行。記住,每行最后都要以分號(hào)結(jié)束。
最后,您會(huì)注意到myvar這個(gè)字以$符號(hào)開(kāi)頭。這個(gè)符號(hào)告訴PHP,這是一個(gè)變量。我們把“Hello World”賦給變量$myvar。一個(gè)變量可以是數(shù)字,也可以是數(shù)組。不管怎樣,所有的變量都是以$符開(kāi)頭。
PHP真正強(qiáng)大之處來(lái)源于它的函數(shù)。函數(shù),基本上是處理指令序列。如果您把所有的選件都編譯進(jìn)PHP,總共會(huì)有超過(guò)700個(gè)函數(shù)。這些函數(shù)可以讓您做很多事情。
現(xiàn)在我們?cè)偌舆M(jìn)一些MySQL的內(nèi)容進(jìn)去。>>
五、裝載數(shù)據(jù)庫(kù)
現(xiàn)在,我們要加入MySQL的內(nèi)容了。要想知道PHP中包含哪些選項(xiàng),或服務(wù)器方面的一些情況,一種簡(jiǎn)便的方法是使用函數(shù)phpinfo()。創(chuàng)建一個(gè)象下面這樣的程序:
<html>
<body>
<?php
phpinfo();
?>
</body>
</html>
保存這個(gè)程序,在瀏覽器中訪問(wèn)這個(gè)文件。您會(huì)看到網(wǎng)頁(yè)中包含了一些有趣的、有用的信息,象這樣。這些信息是有關(guān)服務(wù)器、Web服務(wù)器內(nèi)部環(huán)境變量、PHP中包含的選項(xiàng),等等。在第一段Extensions中,找到以MySQL開(kāi)頭的一行。如果沒(méi)有找到,那說(shuō)明MySQL支持選項(xiàng)并沒(méi)有編譯進(jìn)PHP。您可以再檢查一下安裝步驟,查閱一下PHP文檔,看您是否漏掉了什么。
如果找到了MySQL那一行,那您可以繼續(xù)了。
從MySQL數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)之前,我們得先往數(shù)據(jù)庫(kù)里放一些數(shù)據(jù)。在現(xiàn)在這一階段,還沒(méi)有一個(gè)簡(jiǎn)便的方法來(lái)做這件事情。大多數(shù)的PHP程序都帶有一個(gè)數(shù)據(jù)文件,該文件包含一些數(shù)據(jù)來(lái)創(chuàng)建并激活MySQL數(shù)據(jù)庫(kù)。這個(gè)過(guò)程不在本教程范圍之內(nèi),所以讓我來(lái)替您做這件事情吧。
MySQL使用它自己的用戶權(quán)限表。在安裝時(shí),會(huì)創(chuàng)建一個(gè)默認(rèn)的用戶(root),該用戶是沒(méi)有口令的。數(shù)據(jù)庫(kù)管理員可以根據(jù)需要來(lái)增加用戶并賦予用戶各種不同的權(quán)限,但這項(xiàng)工作完全可以另寫(xiě)一本書(shū)了,所以我們只使用root用戶。如果您自己管理服務(wù)器和數(shù)據(jù)庫(kù),為root用戶分配一個(gè)口令是很重要的。
總之,我們還是接著說(shuō)數(shù)據(jù)庫(kù)吧。對(duì)Win32用戶來(lái)說(shuō),很對(duì)不起,不過(guò)您要在DOS下做些工作。您不得不使用DOS窗口,或者在“執(zhí)行”窗口中鍵入所有命令。別忘了,輸入命令時(shí)要帶上MySQL/bin的目錄名。Unix用戶可以在MySQL的bin目錄下輸入命令,但命令必須以./開(kāi)頭,才能讓程序運(yùn)行起來(lái)。
我們要做的第一件事情是實(shí)際創(chuàng)建出數(shù)據(jù)庫(kù)。在命令行下,鍵入下列命令:
mysqladmin -u root create mydb
這樣就創(chuàng)建了一個(gè)名為“mydb”的數(shù)據(jù)庫(kù)。-u選項(xiàng)告訴MySQL我們使用的是root用戶。
下一步,我們要加入一些數(shù)據(jù),這里我們用的示例數(shù)據(jù)是大家都喜歡用的員工數(shù)據(jù)庫(kù)。我們將會(huì)用到我前面提到過(guò)的數(shù)據(jù)文件。如果您想在這方面多了解一些,可以查閱MySQL所帶的手冊(cè)或訪問(wèn) http://www.turbolift.com/mysql/網(wǎng)站。 < BR>
把下面的文字復(fù)制到一個(gè)文件中,把該文件存在MySQL的bin目錄下(我假定文件名是mydb.dump)。
CREATE TABLE employees ( id tinyint(4) DEFAULT '0' NOT NULL
AUTO_INCREMENT, first varchar(20), last varchar(20),
address varchar(255), position varchar(50), PRIMARY KEY (id),
UNIQUE id (id));INSERT INTO employees VALUES (1,'Bob','Smith',
'128 Here St, Cityname','Marketing Manager');
INSERT INTO employees VALUES (2,'John','Roberts','45 There St ,
Townville','Telephonist');
INSERT INTO employees VALUES (3,'Brad','Johnson','1/34 Nowhere Blvd,
Snowston','Doorman');
如果文字是折行的,請(qǐng)確保每一個(gè)INSERT語(yǔ)句都是另起一行的,F(xiàn)在,我們要把數(shù)據(jù)加入到mydb數(shù)據(jù)庫(kù)中了。在命令行下,鍵入下面的命令:
mysql -u root mydb < mydb.dump
此時(shí)您應(yīng)該不會(huì)遇到什么錯(cuò)誤。如果真的出錯(cuò)了,請(qǐng)仔細(xì)檢查一下是否因上面的文字折行而引起錯(cuò)誤。>>
六、測(cè)試
OK,現(xiàn)在我們已經(jīng)把數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中了,F(xiàn)在我們來(lái)處理這些數(shù)據(jù)。把下面的文字存入一個(gè)文件中,把該文件存在Web服務(wù)器的文檔目錄下,后綴名為.php3。
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
printf("First Name: %s<br>\n", mysql_result($result,0,"first"));
printf("Last Name: %s<br>\n", mysql_result($result,0,"last"));
printf("Address: %s<br>\n", mysql_result($result,0,"address"));
printf("Position: %s<br>\n", mysql_result($result,0,"position"));
?>
</body>
</html>
我來(lái)解釋一下上面的代碼。mysql_connect()函數(shù)負(fù)責(zé)以指定的用戶名(本例中用戶名是root)連接到指定機(jī)器(在本例中機(jī)器是本機(jī)localhost)上的MySQL數(shù)據(jù)庫(kù)。如果您想指定用戶口令,您也可以把它送給這個(gè)函數(shù)。連接的結(jié)果保存在變量$db中。
隨后,mysql_select_db()函數(shù)告訴PHP,我們要讀取的數(shù)據(jù)庫(kù)是mydb。我們可以在程序中同時(shí)連接到多臺(tái)機(jī)器上的多個(gè)數(shù)據(jù)庫(kù),但目前我們還是限于連接一個(gè)數(shù)據(jù)庫(kù)。
接下來(lái),mysql_query()函數(shù)完成最復(fù)雜的部分。利用剛才得到的連接結(jié)果標(biāo)識(shí),該函數(shù)把一行SQL語(yǔ)句送給MySQL服務(wù)器去處理。返回的結(jié)果保存在變量$result中。
最后,mysql_result()函數(shù)顯示SQL查詢命令所得到的各個(gè)字段的值。利用變量$result,我們就可以找到第一條記錄,記錄號(hào)是0,并將其中各字段的值顯示出來(lái)。
如果您以前沒(méi)用過(guò)Perl或C語(yǔ)言,那么printf函數(shù)的語(yǔ)法格式會(huì)顯得很奇怪。在上面的每一行程序中,%s代表表達(dá)式第二部分中的那個(gè)變量(例如,mysql_result($result,0,"position"))應(yīng)該以字符串的形式顯示出來(lái)。想更深入了解printf,請(qǐng)參閱PHP文檔。
這一課我們就講到這里了。我們已經(jīng)成功地編譯、安裝和設(shè)置了MySQL和PHP,并且運(yùn)行了一個(gè)簡(jiǎn)單的程序來(lái)讀取數(shù)據(jù)庫(kù)中的信息。在 第二課里,我們會(huì)做一些更復(fù)雜的工作,來(lái)顯示多行記錄的數(shù)據(jù),甚至與數(shù)據(jù)庫(kù)互相交換數(shù)據(jù)。