国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

PHP/MySQL三日通-第一天

2024-07-24 12:57:07
字體:
來源:轉載
供稿:網友
  一、php/mysql簡介

  您應該聽說過開放源代碼軟件(oss),除非最近六到八個月來您一直住在火星上。這場運動有著巨大的沖擊力,已引起一些大公司的注意。象oralce、informix,還有多家公司都開始把他們的主力數(shù)據(jù)庫產品移植到oss的產物之一 - linux操作系統(tǒng)上。

  如果您有足夠的技術力量,擁有一個復雜龐大的關系數(shù)據(jù)庫系統(tǒng)(rdbms)則是如虎添翼。但是也許您對數(shù)據(jù)庫還剛剛入門,您剛剛讀了jay的文章,決定自己也來搞一個數(shù)據(jù)驅動的網站。可是您也許會發(fā)現(xiàn)您缺乏必要的資源來運行asp服務器或昂貴的數(shù)據(jù)庫系統(tǒng)(您也不需要這些東西)。您需要一些免費的、支持unix的東西。

  那么我建議您使用php和mysql。這兩樣東西加在一起,對于開發(fā)數(shù)據(jù)驅動的網站這項工作而言,真是最佳組合。其實用不著我多費唇舌解釋。一項由netcraft組織的非官方調查顯示,應用php的主機數(shù)目由1998年6月的7,500臺躍升至1999年3月的410,000臺。不錯吧?這兩種軟件的組合還在webcon98大會上贏得了年度數(shù)據(jù)庫產品大獎,還得了一座漂亮的獎杯。

  mysql是一個小巧靈瓏的數(shù)據(jù)庫服務器軟件,對于小型(當然也不一定很小)應用系統(tǒng)是非常理想的。除了支持標準的ansi sql語句,它還支持多種平臺,而在unix系統(tǒng)上該軟件支持多線程運行方式,從而能獲得相當好的性能。對于不使用unix的用戶,它可以在windows nt系統(tǒng)上以系統(tǒng)服務方式運行,或者在windows 95/98系統(tǒng)上以普通進程方式運行。

  php是一種服務器端解釋的腳本語言。如果你接觸過asp的話,那么您對于在html頁面中嵌入代碼應該是比較熟悉了。php代碼在服務器一端被解釋轉變成普通的html頁面內容,送給瀏覽器一端。這種模式使得我們可以用它來完成相當復雜的功能。

  除了免費這一點(當然,mysql也有一些使用許可方面的限制),php/mysql的組合還可以跨平臺運行,這意味著您可以在windows上開發(fā),然后在unix平臺上運行。另外,php也能作為標準的cgi進程來運行,此時它是一個獨立的腳本解釋器,或者是apache的一個嵌入模塊。

  如果您有興趣使用其他數(shù)據(jù)庫服務器的話,php也支持informix、oracle、sybase、solid和postgresql ,以及通用的odbc。

  php支持internet開發(fā)的一些前沿技術。這些技術包括身份認證、xml、動態(tài)圖象生成、wddx、共享內存,以及動態(tài)pdf文檔等等,不一而足。如果您還不滿意的話,php是很容易擴展的,所以只要您有編程能力,您盡可以自己大展身手。
  最后要說的是,兩種軟件都是大量程序員協(xié)同開發(fā)的,因此文檔及郵件列表等支持方式很多。程序錯誤的修正很快,而如果您要求加入新功能的話,總會有人考慮您的要求,并且在可行性足夠高的前提下加以實現(xiàn)。

  說得夠多了!我們來看看這篇教程里都有些什么內容吧。

第一課講的是在unix和windows環(huán)境下安裝這兩個軟件。如果您不太關心這個問題(也許您是在isp的服務器上開發(fā)),您可以直接跳到第一個示例程序,從那里開始您的奇妙之旅。

在第二課里,我們要學習一些更加復雜的腳本功能,比如循環(huán)、處理用戶輸入,以及與數(shù)據(jù)庫交換數(shù)據(jù)等等。

第三課要講的是確認功能,以及如何使您的腳本程序清晰簡練。

  我們開始吧。>>

二、安裝mysql

  快點行動,拿到這些軟件包,仔細研究一下吧。這可不是件容易的事兒。你從獲取軟件包、編譯軟件包到安裝軟件包的過程中都有不少的選擇項。我們先從mysql開始,因為有了它才能運行php。

  mysql中央網站是http://www.mysql.com/。為了方便人們下載使用(這軟件還是比較大的),全球有許許多多的鏡像網站。為更有效地利用因特網,請找一個就近的網站下載。

  在這時候你也會有多種選擇。如果你是發(fā)燒友的話,可以下載源代碼;否則,網上也有各種平臺上運行的預先編譯過的二進制文件可以直接下載。

  另外,mysql還為windows用戶準備了一個共享軟件版本,它的版本號稍低一些。如果你想要最新的版本,得花錢買一個軟件許可。mysql還提供了odbc驅動程序,使前端應用程序可以訪問mysql數(shù)據(jù)庫。有關其他一些詳細信息在它的網站上都有得介紹,您可以去看看。

  預先編譯過的unix版本和windows版本都很簡單,只須解包即可使用,不需要做太多說明了。因此,我們來介紹一下源代碼的編譯。windows用戶請記住,您需要運行mysql程序,該程序是在mysql/bin目錄下。

  下載壓縮過的軟件包文件,放在一個目錄下。使用gzip和tar來解壓縮和解包。比較快的做法是使用下面這樣的命令:

gunzip < mysql-xxxx.tar.gz | tar xvf -

  其中,xxxx是你自己任取的一個版本標記。上面的命令將創(chuàng)建一個名為mysql-xxxx目錄,所有的源程序文件都在這個目錄下。通過執(zhí)行cd mysql-xxxx命令轉入該目錄,仔細閱讀其中的多個readme文件install文件。在遇到某些問題時,這些文件可能會幫上大忙呢。

  mysql帶有一些便利的配置腳本程序。只須簡單地鍵入./configure,您就可以讓這些程序為您完成很多工作。如果您需要明確指定要做的事情,可以使用./configure -help命令,它會給您列出你可以使用的選項。例如,如果您正在一臺內存較少的機器上進行編譯,那么可以使用--with-low-memory選項。我喜歡把mysql安裝在一個總目錄下,而不是安裝在機器上多個目錄下,所以我會指定安裝目錄,并指定-prefix選項。

  您還可以指定許多其他選項,象編譯過程中要略掉哪些部分、保留哪些部分等。我們不妨假定要全部安裝在服務器的/usr/local/mysql目錄下。這意味著我們將鍵入./configure -prefix=/usr/local/mysql命令。

  配置腳本程序運行時會檢查您的系統(tǒng),然后生成一些文件來保證編譯的順利進行。如果該腳本程序失敗,它也會顯示一些有用的錯誤信息告訴您失敗的原因。大家經常會遇到腳本程序在尋找多線程庫文件時失敗。此時您應當檢查一下系統(tǒng)中是否已經安裝了mit-pthreads,如果沒有,那么請您安裝該軟件。linux用戶則必須安裝linuxthreads。這些庫文件對于mysql的多線程運行模式(也就是運行它自己的多個版本〕是非常關鍵的。

  如果一切都順利進行的話,只須簡單鍵入make命令,然后就可以去泡杯咖啡了。mysql是相當復雜的程序,編譯起來得用一段時間。如果發(fā)現(xiàn)錯誤,可以檢查文檔,看看是否您漏掉了某些與您的操作系統(tǒng)有關的準備工作。

  接下來,鍵入make install命令,所有必需的文件都會安裝到相應的目錄。您差不多就可以開始使用了!如果您是mysql新手,以前從未安裝過mysql,那您得創(chuàng)建默認的許可權限才能安裝,因此請鍵入...scripts/mysql_install_db來進行相應的設置。

  就這樣。我們的準備工作完成了。再下面所要做的就是在機器啟動時自動啟動數(shù)據(jù)庫,并在關機時自動關閉數(shù)據(jù)庫。是的,這項工作也有一個專門的腳本程序。mysql.server start命令可以啟動數(shù)據(jù)庫,而mysql.server stop可以關閉數(shù)據(jù)庫。實在是再簡單不過了。如果您想手動啟動數(shù)據(jù)庫(這樣就不用重啟機器了),你以進到安裝mysql的最上層目錄(/usr/local/mysql)然后鍵入bin/safe_mysqld &命令。

  我們已經完成了一半了。接下來是php部分。>>

三、安裝php

  好,看到這里時,希望您已經把mysql安裝好并運行起來了。那實在是太有意思了!下面是php...這個過程要容易一些,不過那些大量的選項還是使人眼花繚亂。當然,您大可不必驚慌。您隨時可以重頭再來,重新編譯php,根據(jù)需要來加入或去掉某個選項。

  php的老家在http://www.php.net/。這個網站信息量極大,從開發(fā)項目內容到軟件錯誤報告都有。和mysql一樣,您可以選一個離您最近的鏡像網站下載。很顯然,您得到網站的downloads部分去下載php。

  這里您的選擇不是很多。有一些預選編譯好的二進制文件,但那都是實驗性的。如果您不是在windows平臺上,那就下載源代碼,自己編譯一下吧。

  但是我們還是先談談windows。在使用php時,一般的作法是在windows系統(tǒng)上開發(fā),然后在unix服務器上運行。您最終可能也會選擇這種方式,這就需要您對兩種平臺下的安裝都很熟悉才行。

  下載windows二進制文件后,您可以用您喜歡的任何一種zip解壓縮程序,把軟件包中的文件解壓到c盤的php3目錄下。軟件包中的readme文件對安裝過程中的細節(jié)作了部分說明,但是我們在這里再對這個文件中的關鍵內容做個讀者文摘:如果您不想把php安裝在c:/php3目錄,而是別的目錄,那么您得編輯解壓縮出來的文件中那個.inf文件。

  在php3目錄中,您會發(fā)現(xiàn)很多.dll文件。把所有文件名不是以php_開頭的那些.dll文件都移到/windows/system目錄下。然后,把php.ini-dist文件改一下名,改成php3.ini,并把它移到/windows目錄下。如果您打開這個文件,會發(fā)現(xiàn)里面有很多有趣的東西可以改。現(xiàn)在,把含有:

extension=php3_mysql.dll


  內容的那一行的注釋去掉。

  如果您使用的是win32平臺上的apache服務器,那么請設置apache,使其能夠識別并解釋php文件。您需要在http.conf文件或是srm.conf文件(具體是哪一個文件取決于您使用的apache軟件的版本)中加入下一行:

  action application/x-httpd-php3 "php3/php.exe"
  addtype application/x-httpd-php3 .php3

  或者,如果您使用的是iis,那么請用鼠標右鍵單擊php_iis_reg.inf文件,并選擇“安裝”。您得重新啟動系統(tǒng),才能使剛才所做的改動生效。

  ok,說完了windows,再來說說unix。當然,我們要從源代碼開始編譯。與mysql相似,把源文件下載、解包。php也同樣包含一個配置腳本程序,可是您不能完全使用默認設置。運行./configure -help | more命令,可以逐頁地觀看有哪些新的、有趣的選項。您必須選擇是把php編譯成外部cgi程序還是apache內嵌模塊。如果您正在使用apache web服務器,并且您可以對它進行重新編譯的話,請選擇內嵌模塊方式,這種方式運行更快,使用也更簡便。否則,您可以選cgi方式。另外,您還得指定將對mysql的支持部分編譯進去。

  現(xiàn)在我們假定要以內嵌模塊方式編譯,并帶有mysql支持部分。如果隨后您需要增加其他選項或庫文件的話,可以在以后再加進去。鍵入下面的命令:

./configure -with-apache=/path/to/apache/dir -with-mysql=/usr/local/mysql

  如果您打算以外部cgi程序方式來編譯的話,請去掉-with-apache選項。配置程序運行起來后,會創(chuàng)建相應的系統(tǒng)文件。接下來簡單地執(zhí)行make命令就行了。

  又可以喝一杯咖啡了。如果您在此時感到坐立不安的話,不必擔心。每個人在初次安裝php的時候都有一點近不及待的感覺。再多喝點咖啡就是了。

  如果您選擇cgi程序方式來編譯,那么現(xiàn)在可以就可以使用了。只須把產生的可執(zhí)行文件復制到cgi程序目錄下就行了。如果您使用apache內嵌模塊方式來編譯,要再執(zhí)行一下make install命令,把有關文件復制到apache目錄下。在該目錄下,您可以按照apache的文檔說明,向其中加入php模塊,并重新編譯apache。

  現(xiàn)在您得告訴web服務器如何通過php程序來處理頁面內容。如果您使用的不是apache,那您需要查閱web服務器軟件的文檔,看看如何讓它處理后綴是.php3的文件。apache 1.3.x版本的用戶僅須在httpd.conf或srm.conf文件中加入:addtype application/x-httpd-php3 .php3。如果您使用的是cgi程序方式,那您在addtype前面還得加入下面內容:

action application/x-httpd-php3 "php3/php.exe

就是這樣。您的運氣還不那么差,現(xiàn)在mysql也運行起來了,php也工作正常了。別忘了,在遇到問題時可以去查閱常見問題解答和軟件文檔。還可以試試電子郵件討論組。

  既然我們已經進行了這么多,下面我們可以實際操練了。>>

四、第一個腳本

  如果我告訴您真正難過的一關已經過了,您一定會很高興。軟件的安裝過程總是無法預料,因為系統(tǒng)跟系統(tǒng)之間可以說是千差萬別。不過您運氣不錯,數(shù)據(jù)庫運行起來,php也編譯安裝完畢,web服務器也可以正確處理擴展名為.php3的文件了。

  我們下面就開始正式上路,要寫第一個腳本程序了。創(chuàng)建一個文本文件,在其中加入下面的內容:

  <html>
<body>

<?php
$myvar = "hello world";
echo $myvar;
?>

</body>
</html>

  現(xiàn)在,訪問相應的url,例如,http://myserver/test.php3。您應該可以看到頁面中包含“hello world”的文字。如果您看到的是錯誤信息,查一下php文檔,看看軟件設置是否正確無誤。

  就是這樣了!這是您的第一個php程序。如果您查看一下這個頁面的html源代碼,您會發(fā)現(xiàn)里面只有hello world 這樣的文字。

  那是因為php引擎過濾了文件內容,對其中的代碼作了處理,轉換成了標準的html。

  在上面的程序中您最先注意到的可能是定界符,也就是以<?php開始的那幾行。這個標記說明后面是php代碼,而?>表示代碼結束。php的強大之處在于,這些代碼可以以多種不同方式放在任意位置 - 我是說任意位置。后面我們會看到一些很有趣的例子,現(xiàn)在我們還是從最簡單的開始。如果您愿意,也可以設置php,讓它使用短標記,<?和?>,但這與xml會發(fā)生沖突,所以要小心使用。如果您是從asp轉向php,您甚至可以讓php使用<%和%>作為定界符。

  您還會注意到每行后面的分號。這些分號稱為分隔符,用于分隔不同的指令。您可以把所有的php代碼寫在一行里,用分隔符把命令分開。但是那樣看起來很亂,所以我們在每個分號后面都另起一行。記住,每行最后都要以分號結束。

  最后,您會注意到myvar這個字以$符號開頭。這個符號告訴php,這是一個變量。我們把“hello world”賦給變量$myvar。一個變量可以是數(shù)字,也可以是數(shù)組。不管怎樣,所有的變量都是以$符開頭。

  php真正強大之處來源于它的函數(shù)。函數(shù),基本上是處理指令序列。如果您把所有的選件都編譯進php,總共會有超過700個函數(shù)。這些函數(shù)可以讓您做很多事情。

  現(xiàn)在我們再加進一些mysql的內容進去。>>

五、裝載數(shù)據(jù)庫

  現(xiàn)在,我們要加入mysql的內容了。要想知道php中包含哪些選項,或服務器方面的一些情況,一種簡便的方法是使用函數(shù)phpinfo()。創(chuàng)建一個象下面這樣的程序:

  <html>
<body>

<?php
phpinfo();
?>

</body>
</html>

  保存這個程序,在瀏覽器中訪問這個文件。您會看到網頁中包含了一些有趣的、有用的信息,象這樣。這些信息是有關服務器、web服務器內部環(huán)境變量、php中包含的選項,等等。在第一段extensions中,找到以mysql開頭的一行。如果沒有找到,那說明mysql支持選項并沒有編譯進php。您可以再檢查一下安裝步驟,查閱一下php文檔,看您是否漏掉了什么。

  如果找到了mysql那一行,那您可以繼續(xù)了。

  從mysql數(shù)據(jù)庫中讀取數(shù)據(jù)之前,我們得先往數(shù)據(jù)庫里放一些數(shù)據(jù)。在現(xiàn)在這一階段,還沒有一個簡便的方法來做這件事情。大多數(shù)的php程序都帶有一個數(shù)據(jù)文件,該文件包含一些數(shù)據(jù)來創(chuàng)建并激活mysql數(shù)據(jù)庫。這個過程不在本教程范圍之內,所以讓我來替您做這件事情吧。

  mysql使用它自己的用戶權限表。在安裝時,會創(chuàng)建一個默認的用戶(root),該用戶是沒有口令的。數(shù)據(jù)庫管理員可以根據(jù)需要來增加用戶并賦予用戶各種不同的權限,但這項工作完全可以另寫一本書了,所以我們只使用root用戶。如果您自己管理服務器和數(shù)據(jù)庫,為root用戶分配一個口令是很重要的。

  總之,我們還是接著說數(shù)據(jù)庫吧。對win32用戶來說,很對不起,不過您要在dos下做些工作。您不得不使用dos窗口,或者在“執(zhí)行”窗口中鍵入所有命令。別忘了,輸入命令時要帶上mysql/bin的目錄名。unix用戶可以在mysql的bin目錄下輸入命令,但命令必須以./開頭,才能讓程序運行起來。

  我們要做的第一件事情是實際創(chuàng)建出數(shù)據(jù)庫。在命令行下,鍵入下列命令:

mysqladmin -u root create mydb

這樣就創(chuàng)建了一個名為“mydb”的數(shù)據(jù)庫。-u選項告訴mysql我們使用的是root用戶。

  下一步,我們要加入一些數(shù)據(jù),這里我們用的示例數(shù)據(jù)是大家都喜歡用的員工數(shù)據(jù)庫。我們將會用到我前面提到過的數(shù)據(jù)文件。如果您想在這方面多了解一些,可以查閱mysql所帶的手冊或訪問 http://www.turbolift.com/mysql網站。

  把下面的文字復制到一個文件中,把該文件存在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');

inseonist');rt into employees values (2,'john','roberts','45 there st ,
townville','teleph

insert into employees values (3,'brad','johnson','1/34 nowhere blvd,
snowston','doorman');


  如果文字是折行的,請確保每一個insert語句都是另起一行的。現(xiàn)在,我們要把數(shù)據(jù)加入到mydb數(shù)據(jù)庫中了。在命令行下,鍵入下面的命令:

    mysql -u root mydb < mydb.dump


  此時您應該不會遇到什么錯誤。如果真的出錯了,請仔細檢查一下是否因上面的文字折行而引起錯誤。>>

 

六、測試

  ok,現(xiàn)在我們已經把數(shù)據(jù)導入到數(shù)據(jù)庫中了。現(xiàn)在我們來處理這些數(shù)據(jù)。把下面的文字存入一個文件中,把該文件存在web服務器的文檔目錄下,后綴名為.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>


  我來解釋一下上面的代碼。mysql_connect()函數(shù)負責以指定的用戶名(本例中用戶名是root)連接到指定機器(在本例中機器是本機localhost)上的mysql數(shù)據(jù)庫。如果您想指定用戶口令,您也可以把它送給這個函數(shù)。連接的結果保存在變量$db中。

  隨后,mysql_select_db()函數(shù)告訴php,我們要讀取的數(shù)據(jù)庫是mydb。我們可以在程序中同時連接到多臺機器上的多個數(shù)據(jù)庫,但目前我們還是限于連接一個數(shù)據(jù)庫。

  接下來,mysql_query()函數(shù)完成最復雜的部分。利用剛才得到的連接結果標識,該函數(shù)把一行sql語句送給mysql服務器去處理。返回的結果保存在變量$result中。

  最后,mysql_result()函數(shù)顯示sql查詢命令所得到的各個字段的值。利用變量$result,我們就可以找到第一條記錄,記錄號是0,并將其中各字段的值顯示出來。

  如果您以前沒用過perl或c語言,那么printf函數(shù)的語法格式會顯得很奇怪。在上面的每一行程序中,%s代表表達式第二部分中的那個變量(例如,mysql_result($result,0,"position"))應該以字符串的形式顯示出來。想更深入了解printf,請參閱php文檔。

  這一課我們就講到這里了。我們已經成功地編譯、安裝和設置了mysql和php,并且運行了一個簡單的程序來讀取數(shù)據(jù)庫中的信息。在第二課里,我們會做一些更復雜的工作,來顯示多行記錄的數(shù)據(jù),甚至與數(shù)據(jù)庫互相交換數(shù)據(jù)。

  繼續(xù)努力吧!

商業(yè)源碼熱門下載www.html.org.cn

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 禄丰县| 崇明县| 南投县| 常山县| 台东县| 莱西市| 东宁县| 民权县| 定远县| 肥西县| 本溪市| 浮山县| 乌什县| 昂仁县| 固镇县| 香格里拉县| 丰顺县| 通河县| 广东省| 科尔| 林西县| 武宁县| 当涂县| 龙口市| 左贡县| 庄浪县| 新丰县| 财经| 上思县| 伊金霍洛旗| 阳山县| 长乐市| 塔城市| 保定市| 信丰县| 灵璧县| 随州市| 交口县| 高安市| 水城县| 商洛市|