用PHP和MySQL構建一個資料庫驅動的網站(四)

來源:互聯網
上載者:User
mysql|資料|資料庫 摘要

  在這一章中,我們將介紹PHP這個伺服器端的指令碼語言。我們將會看到,這個語言可以很好地支援與MySQL資料庫的通訊。

(2002-08-29 14:10:52)

--------------------------------------------------------------------------------
By Wing, 出處:Linuxaid


第三章:PHP入門

  在上一章中,我們學習了如何使用MySQL資料庫引擎在一個簡單的資料庫(只包含一個叫Jokes的資料表)中儲存一個笑話的列表。當時,我們是通過在MySQL用戶端的命令列來輸入SQL命令(查詢語句)來完成的。在這一章中,我們將介紹PHP這個伺服器端的指令碼語言。我們將會看到,這個語言可以很好地支援與MySQL資料庫的通訊。

PHP簡介

  正如我們在前面提到的,PHP是一個伺服器端的指令碼語言。這個概念可能很難理解,特別是如果你以前只用過HTML和JavaScript來設計過網頁時更是如此。一個伺服器端的指令碼程式與JavaScript在許多地方有點相像,兩者都允許你在Web頁面的HTML中插入一些程式(指令碼)。其結果就是,這些指令碼使你可以控制在瀏覽器視窗內會顯示什麼,這顯然要比直接使用HTML要來得靈活得多。

  JavaScript和PHP的關鍵的不同點是:當Web瀏覽器解釋JavaScript時,包含這個指令碼的Web頁面已經被下載了,而對於象PHP這樣的伺服器端指令碼程式來說,解釋的工作是由伺服器在將頁面發出到瀏覽器之前完全的。解釋工作完成後,Web頁面中的PHP的代碼將由指令碼啟動並執行結果所代替,瀏覽者看到的完全是標準的HTML檔案。指令碼是完全由伺服器來處理的。這也就是它的命名的由來:伺服器端指令碼程式。

  讓我們再回頭看看我們在第一章裡建立的樣本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>



  這個程式中的絕大多數是採用HTML格式的。只有在中間的行是用PHP寫的。 表示“結束PHP代碼”。Web伺服器在將這個Web頁面發送到請求它的瀏覽器之前會對這個兩個標識符之前的所有內容進行處理,並將其轉換成標準的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>



  請注意,現在所有的PHP代碼都沒有被顯示。它們被相應的標準的HTML所取代,能過這個例子,我們可以看到伺服器端指令碼的幾個優勢:

  不存在瀏覽器安全色的問題。PHP指令碼僅僅是由Web伺服器來解釋的,所以我們不必擔心你使用的語言是否能被你的訪問者的瀏覽器所支援。

  可以訪問伺服器端的資源。在上面的例子中,我們在Web頁面中放置了Web伺服器的日期。而當我們使用的是JavaScript,要實現同樣的功能,我們只能顯示Web瀏覽器在上面啟動並執行電腦的日期。這個例子還對於使用伺服器端的資源還不是十分典型的,事實上我們可以很方便地插入一些其他的資訊,而這些資訊只能通過運行在伺服器上的指令碼來調用,例如,運行在Web伺服器上的MySQL資料庫中儲存的資訊。

  簡化了用戶端的裝載。JavaScript會明顯降低Web頁面的顯示速度,因為在顯示這個Web頁面之前,瀏覽器首先得運行JavaScript指令碼。而對於伺服器端指令碼來說,這種負擔將由Web伺服器獨自承擔。

基本的文法和命令

  對於任何一個用過C、C++、Java、JavaScript、Perl或其他源自C的語言的人,PHP的文法都會讓你覺得非常熟悉。一個PHP指令碼包含一系列的命令(語句),Web伺服器必須依次處理這些指令。與上面提到的其他語言一樣,PHP語句也總是以分號(;)結束。

  這是一個典型的PHP語句:

echo( "This is a test!" );


  這個語句調用了一個叫echo的內建函數,並傳遞給它這麼一個字串:“This is a test! ”。內建函數你可以理解為“不需要另外的說明PHP就能知道該怎麼做”的事情。PHP有很多的內建函數,我們可以利用它們來做許多事,從發送e-mail到處理儲存在資料庫中的不同類型的資料都是它們的管轄範圍。echo函數只是簡單地將傳遞給它的文本插入到HTML頁面的當前位置。你可以看看下面這個例子:


<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伺服器上,瀏覽器看到的將是這樣的一頁:


<HTML>
<HEAD>
<TITLE> Simple PHP Example </TITLE>
</HEAD>
<BODY>
<P>This is a <B>test</B>!</P>
</BODY>
</HTML>



  請注意,包含HTML標識符(和)在內的所有文本都被正確地顯示了出來。

  你也許會感到疑惑,我們為什麼要在這裡使用括弧和引號。引號在PHP中是用來標誌字串的開始和結束。括弧有雙重作用,首先,它指出echo是一個你想要調用的函數,其次,它標誌了這個函數的參數的開始和結束。通過參數,你可以指揮你的函數去幹什麼。對於echo函數,我們只需要給它一個字串,用來在頁面上顯示,但是我們將會看到有些函數有幾個參數(在這種情況下,我們用逗號分開各個參數)。即使對於沒有參數的函數,我們仍需要有括弧,只不過在括弧中間我們不必輸入任何內容。

變數和運算子

  PHP中的變數與許多其它程式中的變數一樣。當還未被初始化時,變數僅僅是一個假想的容器的名字,其中可以存放任何數值。下面的語句建立了一個叫$testvariable(在PHP中所有的變數都以一個美元符開始)並將其賦值為3:

$testvariable = 3;


  PHP是一個“寬鬆類型”的語言,這就是說,一個變數可以包含任何類型的資料(數字、字串或者其他類型),在它的存活期內其類型可以自由地轉換。所以如果在上面的語句後再出現這樣的語句,這就意味著給我們的已經存在的$testvariable變數重新賦了一個值。這個變數從一個數值變數變成了一個字串變數:

$testvariable = "Three";


  在上面的兩個語句中我們用到的等號被稱之“賦值運算子”,它是用來給一個變數賦值的。另外,我們還有一些執行數學運算的運算子:


$testvariable = 1 + 1; //變數賦值為2。
$testvariable = 1 - 1; //變數賦值為0。
$testvariable = 2 * 2; //變數賦值為4。
$testvariable = 2 / 2; //變數賦值為1。



  上面的各行的最後都有一個注釋。注釋是通過插入解釋性的文字來說明我們的代碼的用途,同時它也會通知PHP解釋程式忽略對這部分語句的解釋。注釋以//開始並在同一行內結束。如果你熟悉在其他語言中的/* */風格的注釋,在PHP中你也可以這樣用。在我們這個教程中,我們會經常使用注釋來對程式作出解釋。

  現在回到我們上面的四個語句,四個運算子分別被用來完成加、減、乘、除的運算。另外,還有一個運行符是用來連接字串的:


//給變數賦值為"Hi there!".
$testvariable = "Hi " . "there!";



  變數可以被應用在很多使用實際數值的地方。你可以看看下面的例子:


$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!'



  請特別注意最後的兩行,你可以直接在一個字串中包含一個變數名,如果你用雙引號將其括起來,將會用該變數的值代替變數名。而最後一行證明,如果你使用的是單引號,是不會作這種轉換的。

使用者互動和表單

  對於許多我們感興趣的PHP應用來說,最基本的功能是實現與瀏覽這個頁面的使用者的互動。如果你熟悉JavaScript,你可能會習慣於這麼一種交易處理的模式,那就是對使用者的許多行動直接作出反應(例如將滑鼠移動到頁面上的一個串連)。而對於PHP這樣的伺服器端指令碼程式而言,它用來實現與使用者互動的活動範圍要小得多,與使用者的互動僅僅發生在使用者向伺服器發出請求以及伺服器用一個動態網頁面作出回應之間。

  使用者與PHP實現互動的關鍵是理解使用者對一個新Web頁面發出的請求中可能包含的發出資訊。我們將會看到,PHP使得這個工作極為簡單。

  最簡單的方法是使用“URL查詢字串”在頁面請求中發出資訊。如果你曾經看到過一個在檔案名稱後包含問號的URL,那就是採用的這種技術。讓我們來看一個簡單的例子。建立一個標準的HTML檔案(不一定使用.php副檔名,在這個檔案中將不包含任何PHP代碼),並在其中加入以下串連:

Hi, I'm Kevin!


  這是指向一個叫welcome.php的檔案的串連,但是在串連這個檔案的同時,我們還在頁面請求中傳遞了一個變數。這個變數是被作為“查詢字串”的一部分傳遞的,它位於URL的問號後面。這個變數的名字是name,它的值是Kevin。也就是說,我們建立了一個串連,這個串連裝載welcome.php並告知這個檔案中包含的PHP代碼:name等於Kevin。

  要清楚這麼做對我們有什麼好處,我們需要看看welcome.php。 同樣地將其作為一個新的HTML檔案來建立,但是這一次要記得使用.php 副檔名,這會告訴Web伺服器在這個檔案中有一些PHP代碼需要解釋。如果你的Web伺服器還不接受.php作為PHP檔案的副檔名,你可能需要將其改名為welcome.php3(在這種情況下,你也需要相應調整上面的代碼中的串連)。在這個新檔案中,輸入以下內容:


<?php
  echo( "Welcome to our Web site, $name!" );
?>



  現在,如果你用第一個檔案中串連去裝載第二個檔案,你會看到這一頁顯示“Welcome to our Web site, Kevin!”,這個通過URL的查詢字串傳遞過來的變數的值被自動地賦予了一個叫$name的變數,我們在一段文本中顯示了這個傳遞過來的變數。

  如果你需要的話,你也可以通過查詢字串傳遞幾個變數。讓我們看看這個例子的稍微複雜一點的版本。將HTML檔案中的串連改變為:



Hi, I'm Kevin Yank!



  這一次,我們傳遞了兩個變數:firstname和lastname。這些變數在查詢字串中被&符號分開。你可以傳遞更多的變數,只要你將每一個name=value對以&符號分開。

  如前所述,我們可以在我們的welcome.php檔案中使用這兩個變數的值:


<?php
  echo( "Welcome to our Web site,
$firstname $lastname!" );
?>




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.