用PHP與MySQL構(gòu)建一個數(shù)據(jù)庫驅(qū)動的網(wǎng)站(4)
發(fā)表時間:2024-02-22 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]摘要 在這一章中,我們將介紹PHP這個服務(wù)器端的腳本語言。我們將會看到,這個語言可以很好地支持與MySQL數(shù)據(jù)庫的通信。(2002-08-29 14:10:52)-------------------------------------------------------------------...
摘要
在這一章中,我們將介紹PHP這個服務(wù)器端的腳本語言。我們將會看到,這個語言可以很好地支持與MySQL數(shù)據(jù)庫的通信。
(2002-08-29 14:10:52)
--------------------------------------------------------------------------------
By Wing, 出處:Linuxaid
第三章:PHP入門
在上一章中,我們學(xué)習(xí)了如何使用MySQL數(shù)據(jù)庫引擎在一個簡單的數(shù)據(jù)庫(只包含一個叫Jokes的數(shù)據(jù)表)中存儲一個笑話的列表。當(dāng)時,我們是通過在MySQL客戶端的命令行來輸入SQL命令(查詢語句)來完成的。在這一章中,我們將介紹PHP這個服務(wù)器端的腳本語言。我們將會看到,這個語言可以很好地支持與MySQL數(shù)據(jù)庫的通信。
PHP簡介
正如我們在前面提到的,PHP是一個服務(wù)器端的腳本語言。這個概念可能很難理解,特別是如果你以前只用過HTML和JavaScript來設(shè)計過網(wǎng)頁時更是如此。一個服務(wù)器端的腳本程序與JavaScript在許多地方有點相像,兩者都允許你在Web頁面的HTML中插入一些程序(腳本)。其結(jié)果就是,這些腳本使你可以控制在瀏覽器窗口內(nèi)會顯示什么,這顯然要比直接使用HTML要來得靈活得多。
JavaScript和PHP的關(guān)鍵的不同點是:當(dāng)Web瀏覽器解釋JavaScript時,包含這個腳本的Web頁面已經(jīng)被下載了,而對于象PHP這樣的服務(wù)器端腳本程序來說,解釋的工作是由服務(wù)器在將頁面發(fā)出到瀏覽器之前完全的。解釋工作完成后,Web頁面中的PHP的代碼將由腳本運行的結(jié)果所代替,瀏覽者看到的完全是標(biāo)準(zhǔn)的HTML文件。腳本是完全由服務(wù)器來處理的。這也就是它的命名的由來:服務(wù)器端腳本程序。
讓我們再回頭看看我們在第一章里建立的示例today.php:
<HTML>
<HEAD>
<TITLE>Today's Date</TITLE>
</HEAD>
<BODY>
<P>Today's Date (according to this Web server) is</p>
<?ph
echo( date("l, F dS Y.") );
?>
</BODY>
</HTML>
這個程序中的絕大多數(shù)是采用HTML格式的。只有在中間的行是用PHP寫的。 表示“結(jié)束PHP代碼”。Web服務(wù)器在將這個Web頁面發(fā)送到請求它的瀏覽器之前會對這個兩個標(biāo)識符之前的所有內(nèi)容進行處理,并將其轉(zhuǎn)換成標(biāo)準(zhǔn)的HTML代碼。瀏覽器接受到的頁面將是這樣的:
<HTML>
<HEAD>
<TITLE>Today's Date</TITLE>
</HEAD>
<BODY>
<P>Today's Date (according to this Web server) is</p>
Wednesday, June 7th 2000.
</BODY>
</HTML>
請注意,現(xiàn)在所有的PHP代碼都沒有被顯示。它們被相應(yīng)的標(biāo)準(zhǔn)的HTML所取代,能過這個例子,我們可以看到服務(wù)器端腳本的幾個優(yōu)勢:
不存在瀏覽器兼容的問題。PHP腳本僅僅是由Web服務(wù)器來解釋的,所以我們不必擔(dān)心你使用的語言是否能被你的訪問者的瀏覽器所支持。
可以訪問服務(wù)器端的資源。在上面的例子中,我們在Web頁面中放置了Web服務(wù)器的日期。而當(dāng)我們使用的是JavaScript,要實現(xiàn)同樣的功能,我們只能顯示W(wǎng)eb瀏覽器在上面運行的計算機的日期。這個例子還對于使用服務(wù)器端的資源還不是十分典型的,事實上我們可以很方便地插入一些其他的信息,而這些信息只能通過運行在服務(wù)器上的腳本來調(diào)用,例如,運行在Web服務(wù)器上的MySQL數(shù)據(jù)庫中存儲的信息。
簡化了客戶端的裝載。JavaScript會明顯降低Web頁面的顯示速度,因為在顯示這個Web頁面之前,瀏覽器首先得運行JavaScript腳本。而對于服務(wù)器端腳本來說,這種負擔(dān)將由Web服務(wù)器獨自承擔(dān)。
基本的語法和命令
對于任何一個用過C、C++、Java、JavaScript、Perl或其他源自C的語言的人,PHP的語法都會讓你覺得非常熟悉。一個PHP腳本包含一系列的命令(語句),Web服務(wù)器必須依次處理這些指令。與上面提到的其他語言一樣,PHP語句也總是以分號(;)結(jié)束。
這是一個典型的PHP語句:
echo( "This is a test!" );
這個語句調(diào)用了一個叫echo的內(nèi)置函數(shù),并傳遞給它這么一個字符串:“This is a test! ”。內(nèi)置函數(shù)你可以理解為“不需要另外的說明PHP就能知道該怎么做”的事情。PHP有很多的內(nèi)置函數(shù),我們可以利用它們來做許多事,從發(fā)送e-mail到處理存儲在數(shù)據(jù)庫中的不同類型的數(shù)據(jù)都是它們的管轄范圍。echo函數(shù)只是簡單地將傳遞給它的文本插入到HTML頁面的當(dāng)前位置。你可以看看下面這個例子:
<HTML>
<HEAD>
<TITLE> Simple PHP Example </TITLE>
</HEAD>
<BODY>
<P><?php echo("This is a <B>test</B>!"); ?></P>
</BODY>
</HTML>
如果你給這段代碼起名為test.php(或者test.php3,如果你的Web主機還沒有將.php文件配置為PHP腳本),并將它放置到你的Web服務(wù)器上,瀏覽器看到的將是這樣的一頁:
<HTML>
<HEAD>
<TITLE> Simple PHP Example </TITLE>
</HEAD>
<BODY>
<P>This is a <B>test</B>!</P>
</BODY>
</HTML>
請注意,包含HTML標(biāo)識符(和)在內(nèi)的所有文本都被正確地顯示了出來。
你也許會感到疑惑,我們?yōu)槭裁匆谶@里使用括號和引號。引號在PHP中是用來標(biāo)志字符串的開始和結(jié)束。括號有雙重作用,首先,它指出echo是一個你想要調(diào)用的函數(shù),其次,它標(biāo)志了這個函數(shù)的參數(shù)的開始和結(jié)束。通過參數(shù),你可以指揮你的函數(shù)去干什么。對于echo函數(shù),我們只需要給它一個字符串,用來在頁面上顯示,但是我們將會看到有些函數(shù)有幾個參數(shù)(在這種情況下,我們用逗號分開各個參數(shù))。即使對于沒有參數(shù)的函數(shù),我們?nèi)孕枰欣ㄌ,只不過在括號中間我們不必輸入任何內(nèi)容。
變量和運算符
PHP中的變量與許多其它程序中的變量一樣。當(dāng)還未被初始化時,變量僅僅是一個假想的容器的名字,其中可以存放任何數(shù)值。下面的語句建立了一個叫$testvariable(在PHP中所有的變量都以一個美元符開始)并將其賦值為3:
$testvariable = 3;
PHP是一個“寬松類型”的語言,這就是說,一個變量可以包含任何類型的數(shù)據(jù)(數(shù)字、字符串或者其他類型),在它的存活期內(nèi)其類型可以自由地轉(zhuǎn)換。所以如果在上面的語句后再出現(xiàn)這樣的語句,這就意味著給我們的已經(jīng)存在的$testvariable變量重新賦了一個值。這個變量從一個數(shù)值變量變成了一個字符串變量:
$testvariable = "Three";
在上面的兩個語句中我們用到的等于號被稱之“賦值運算符”,它是用來給一個變量賦值的。另外,我們還有一些執(zhí)行數(shù)學(xué)運算的運算符:
$testvariable = 1 + 1; //變量賦值為2。
$testvariable = 1 - 1; //變量賦值為0。
$testvariable = 2 * 2; //變量賦值為4。
$testvariable = 2 / 2; //變量賦值為1。
上面的各行的最后都有一個注釋。注釋是通過插入解釋性的文字來說明我們的代碼的用途,同時它也會通知PHP解釋程序忽略對這部分語句的解釋。注釋以//開始并在同一行內(nèi)結(jié)束。如果你熟悉在其他語言中的/* */風(fēng)格的注釋,在PHP中你也可以這樣用。在我們這個教程中,我們會經(jīng)常使用注釋來對程序作出解釋。
現(xiàn)在回到我們上面的四個語句,四個運算符分別被用來完成加、減、乘、除的運算。另外,還有一個運行符是用來連接字符串的:
//給變量賦值為"Hi there!".
$testvariable = "Hi " . "there!";
變量可以被應(yīng)用在很多使用實際數(shù)值的地方。你可以看看下面的例子:
$var1 = "PHP"; //將$var1賦值為"PHP"
$var2 = 5; //將$var2賦值為5
$var3 = $var2 + 1; //將$var3賦值為6
$var2 = $var1; //將$var2賦值為"PHP"
echo($var1); //輸出"PHP"
echo($var2); //輸出"PHP"
echo($var3); //輸出6
echo($var1 . " rules!"); //輸出"PHP rules!"
echo("$var1 rules!"); //輸出"PHP rules!"
echo('$var1 rules!'); //輸出'$var1 rules!'
請?zhí)貏e注意最后的兩行,你可以直接在一個字符串中包含一個變量名,如果你用雙引號將其括起來,將會用該變量的值代替變量名。而最后一行證明,如果你使用的是單引號,是不會作這種轉(zhuǎn)換的。
用戶交互和表單
對于許多我們感興趣的PHP應(yīng)用來說,最基本的功能是實現(xiàn)與瀏覽這個頁面的用戶的交互。如果你熟悉JavaScript,你可能會習(xí)慣于這么一種事務(wù)處理的模式,那就是對用戶的許多行動直接作出反應(yīng)(例如將鼠標(biāo)移動到頁面上的一個連接)。而對于PHP這樣的服務(wù)器端腳本程序而言,它用來實現(xiàn)與用戶交互的活動范圍要小得多,與用戶的交互僅僅發(fā)生在用戶向服務(wù)器發(fā)出請求以及服務(wù)器用一個動態(tài)頁面作出回應(yīng)之間。
用戶與PHP實現(xiàn)交互的關(guān)鍵是理解用戶對一個新Web頁面發(fā)出的請求中可能包含的發(fā)出信息。我們將會看到,PHP使得這個工作極為簡單。
最簡單的方法是使用“URL查詢字符串”在頁面請求中發(fā)出信息。如果你曾經(jīng)看到過一個在文件名后包含問號的URL,那就是采用的這種技術(shù)。讓我們來看一個簡單的例子。建立一個標(biāo)準(zhǔn)的HTML文件(不一定使用.php擴展名,在這個文件中將不包含任何PHP代碼),并在其中加入以下連接:
Hi, I'm Kevin!
這是指向一個叫welcome.php的文件的連接,但是在連接這個文件的同時,我們還在頁面請求中傳遞了一個變量。這個變量是被作為“查詢字符串”的一部分傳遞的,它位于URL的問號后面。這個變量的名字是name,它的值是Kevin。也就是說,我們建立了一個連接,這個連接裝載welcome.php并告知這個文件中包含的PHP代碼:name等于Kevin。
要清楚這么做對我們有什么好處,我們需要看看welcome.php。 同樣地將其作為一個新的HTML文件來建立,但是這一次要記得使用.php 擴展名,這會告訴Web服務(wù)器在這個文件中有一些PHP代碼需要解釋。如果你的Web服務(wù)器還不接受.php作為PHP文件的擴展名,你可能需要將其改名為welcome.php3(在這種情況下,你也需要相應(yīng)調(diào)整上面的代碼中的連接)。在這個新文件中,輸入以下內(nèi)容:
<?php
echo( "Welcome to our Web site, $name!" );
?>
現(xiàn)在,如果你用第一個文件中連接去裝載第二個文件,你會看到這一頁顯示“Welcome to our Web site, Kevin!”,這個通過URL的查詢字符串傳遞過來的變量的值被自動地賦予了一個叫$name的變量,我們在一段文本中顯示了這個傳遞過來的變量。
如果你需要的話,你也可以通過查詢字符串傳遞幾個變量。讓我們看看這個例子的稍微復(fù)雜一點的版本。將HTML文件中的連接改變?yōu)椋?br>
Hi, I'm Kevin Yank!
這一次,我們傳遞了兩個變量:firstname和lastname。這些變量在查詢字符串中被&符號分開。你可以傳遞更多的變量,只要你將每一個name=value對以&符號分開。
如前所述,我們可以在我們的welcome.php文件中使用這兩個變量的值:
<?php
echo( "Welcome to our Web site,
$firstname $lastname!" );
?>