程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP/MySQL三日通(3)

PHP/MySQL三日通(3)

編輯:PHP綜合

一、 while循環

在這一課裡,我們將會繼續深入下去,使用PHP和MySQL來寫出一些簡單而有用的頁面。我們從昨天創建的數據庫開始,顯示庫中的數據,但是會再稍微加以潤色。

首先,我們用下面的代碼來查詢數據庫內容。

<html>
<body>
<?php
$db = mysql_connect(\"localhost\", \"root\");
mysql_select_db(\"mydb\",$db);
$result = mysql_query(\"SELECT * FROM employees\",$db);
echo \"<table border=1>\n\";
echo \"<tr><td>姓名</td><td>職位</td></tr>\n\";
while ($myrow = mysql_fetch_row($result)) {
printf(\"<tr><td>%s %s</td><td>%s</td></tr>\n\", $myrow[1], $myrow[2], $myrow[3]);
}
echo \"</table>\n\";
?>
</body>
</html>

您可能已經注意到,我們在這個程序裡加進了一些新東西。最明顯的是while()循環。該循環是說,只要數據庫裡還有記錄可讀(使用mysql_fetch_row()函數),那就把該記錄賦給變量$myrow,然後執行大括號({})內的指令。仔細看一下這裡,這部分是比較重要的。

我們應該注意一下mysql_fetch_row()函數。這裡有一點小問題,它返回的是一個數組,必須以數組下標來訪問其中的某個字段。第一個字段下標為0,第二個是1,依此類推。在執行某些復雜查詢時,這麼做簡直實在是太煩瑣了。

現在我們更仔細地研究一下循環過程。程序前幾行我們在第一課的例子中已經看到過了。然後,在while()循環中,我們從查詢結果中讀取一條記錄並把該記錄賦給數組$myrow。接著,我們用printf函數把數據中的內容顯示在屏幕上。隨後,循環反復執行,讀取下一條記錄賦給$myrow。這樣繼續下去,直到所有記錄都已被讀取完為止。

使用while()循環的一個好處是,如果數據庫查詢沒有返回任何記錄,那您也不會收到錯誤信息。在剛執行循環語句時,循環條件就不滿足,不會有任何數據賦給$myrow,程序就直接往下運行了。

但是如果查詢未返回任何數據,我們怎麼讓用戶知道這一點呢?我們也許該提供點兒相關的消息給用戶吧。這是可以做到的,下面我們就看看怎麼做。>>

二、 if-else

請看下面的程序。


<html>
<body>
<?php
$db = mysql_connect(\"localhost\", \"root\");
mysql_select_db(\"mydb\",$db);
$result = mysql_query(\"SELECT * FROM employees\",$db);
if ($myrow = mysql_fetch_array($result)) {
echo \"<table border=1>\n\";
echo \"<tr><td>姓名</td><td>住址</td></tr>\n\";
do {
  printf(\"<tr><td>%s %s</td><td>%s</tr>\n\", $myrow[\"first\"], $myrow[\"last\"], $myrow[\"address\"]);
}
while ($myrow = mysql_fetch_array($result));
echo \"</table>\n\";
} else {
  echo \"對不起,沒有找到記錄!\";
}
?>
</body>
</html>

 這段程序中包含有不少新內容,不過這些內容都相當簡單。首先是mysql_fetch_array()函數。該函數與mysql_fetch_row()十分相近,只有一點不同:使用這個函數時,我們可以通過字段名而不是數組下標來訪問它返回的字段,比如$myrow[\"first\"]。這樣我們就可以省不少力氣了。另外,程序中還加進了do/while循環和if-else條件判定語句。

if-else條件判定語句的含意是,如果我們成功地把一條記錄賦給了$myrow變量,那就繼續;否則,就跳到else部分,執行那裡的指令。

do/while循環是我們在上頁中用戶的while()循環的一個變體。我們要用到do/while的原因是:在最初的if語句中,我們已經把查詢返回的第一條記錄賦給變量$myrow了。如果這時我們執行一般的while循環(比如,while ($myrow = mysql_fetch_row($result)),那我們就會把第二條記錄賦給$myrow,而第一條記錄就被沖掉了。但是do/while循環可以讓我們執行一次循環體內容之後再來判定循環條件。因此,我們就不會不小心漏掉第一條記錄了。

最後,如果查詢結果沒有任何記錄的話,程序就會執行包含在else{}部分的那些語句。如果您想看到這部分程序的執行情況,可以把SQL語句改為SELECT * FROM employees WHERE id=6,或改成其他形式,使得查詢結果中沒有任何記錄。

下面我們來擴充一下循環if-else 代碼,使得頁面內容更加豐富。相信您會喜歡的。>>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved