天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP_MySQL教程-第二天while循環(huán)與數(shù)據(jù)庫(kù)操作第1/2頁(yè)

第一頁(yè) while循環(huán) 
在這一課里,我們將會(huì)繼續(xù)深入下去,使用php和MySQL來(lái)寫出一些簡(jiǎn)單而有用的頁(yè)面。我們從昨天創(chuàng)建的數(shù)據(jù)庫(kù)開始,顯示庫(kù)中的數(shù)據(jù),但是會(huì)再稍微加以潤(rùn)色。 
首先,我們用下面的代碼來(lái)查詢數(shù)據(jù)庫(kù)內(nèi)容。
復(fù)制代碼 代碼如下:
<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>  

您可能已經(jīng)注意到,我們?cè)谶@個(gè)程序里加進(jìn)了一些新東西。最明顯的是while()循環(huán)。該循環(huán)是說(shuō),只要數(shù)據(jù)庫(kù)里還有記錄可讀(使用mysql_fetch_row()函數(shù)),那就把該記錄賦給變量$myrow,然后執(zhí)行大括號(hào)({})內(nèi)的指令。仔細(xì)看一下這里,這部分是比較重要的。 
我們應(yīng)該注意一下mysql_fetch_row()函數(shù)。這里有一點(diǎn)小問(wèn)題,它返回的是一個(gè)數(shù)組,必須以數(shù)組下標(biāo)來(lái)訪問(wèn)其中的某個(gè)字段。第一個(gè)字段下標(biāo)為0,第二個(gè)是1,依此類推。在執(zhí)行某些復(fù)雜查詢時(shí),這么做簡(jiǎn)直實(shí)在是太煩瑣了。 
現(xiàn)在我們更仔細(xì)地研究一下循環(huán)過(guò)程。程序前幾行我們?cè)诘谝徽n的例子中已經(jīng)看到過(guò)了。然后,在while()循環(huán)中,我們從查詢結(jié)果中讀取一條記錄并把該記錄賦給數(shù)組$myrow。接著,我們用printf函數(shù)把數(shù)據(jù)中的內(nèi)容顯示在屏幕上。隨后,循環(huán)反復(fù)執(zhí)行,讀取下一條記錄賦給$myrow。這樣繼續(xù)下去,直到所有記錄都已被讀取完為止。 
使用while()循環(huán)的一個(gè)好處是,如果數(shù)據(jù)庫(kù)查詢沒(méi)有返回任何記錄,那您也不會(huì)收到錯(cuò)誤信息。在剛執(zhí)行循環(huán)語(yǔ)句時(shí),循環(huán)條件就不滿足,不會(huì)有任何數(shù)據(jù)賦給$myrow,程序就直接往下運(yùn)行了。 
但是如果查詢未返回任何數(shù)據(jù),我們?cè)趺醋層脩糁肋@一點(diǎn)呢?我們也許該提供點(diǎn)兒相關(guān)的消息給用戶吧。這是可以做到的,下面我們就看看怎么做。>>

第二頁(yè) if-else 
請(qǐng)看下面的程序。
復(fù)制代碼 代碼如下:
<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 "對(duì)不起,沒(méi)有找到記錄!";     


?> 

</body> 
</html>  

這段程序中包含有不少新內(nèi)容,不過(guò)這些內(nèi)容都相當(dāng)簡(jiǎn)單。首先是mysql_fetch_array()函數(shù)。該函數(shù)與mysql_fetch_row()十分相近,只有一點(diǎn)不同:使用這個(gè)函數(shù)時(shí),我們可以通過(guò)字段名而不是數(shù)組下標(biāo)來(lái)訪問(wèn)它返回的字段,比如$myrow["first"]。這樣我們就可以省不少力氣了。另外,程序中還加進(jìn)了do/while循環(huán)和if-else條件判定語(yǔ)句。 
if-else條件判定語(yǔ)句的含意是,如果我們成功地把一條記錄賦給了$myrow變量,那就繼續(xù);否則,就跳到else部分,執(zhí)行那里的指令。 
do/while循環(huán)是我們?cè)谏享?yè)中用戶的while()循環(huán)的一個(gè)變體。我們要用到do/while的原因是:在最初的if語(yǔ)句中,我們已經(jīng)把查詢返回的第一條記錄賦給變量$myrow了。如果這時(shí)我們執(zhí)行一般的while循環(huán)(比如,while ($myrow = mysql_fetch_row($result)),那我們就會(huì)把第二條記錄賦給$myrow,而第一條記錄就被沖掉了。但是do/while循環(huán)可以讓我們執(zhí)行一次循環(huán)體內(nèi)容之后再來(lái)判定循環(huán)條件。因此,我們就不會(huì)不小心漏掉第一條記錄了。 
最后,如果查詢結(jié)果沒(méi)有任何記錄的話,程序就會(huì)執(zhí)行包含在else{}部分的那些語(yǔ)句。如果您想看到這部分程序的執(zhí)行情況,可以把SQL語(yǔ)句改為SELECT * FROM employees WHERE id=6,或改成其他形式,使得查詢結(jié)果中沒(méi)有任何記錄。 
下面我們來(lái)擴(kuò)充一下循環(huán)if-else 代碼,使得頁(yè)面內(nèi)容更加豐富。相信您會(huì)喜歡的。

第三頁(yè) 第一個(gè)程序腳本 
我們剛剛學(xué)到了循環(huán)語(yǔ)句,下面我們將在一個(gè)更加實(shí)際一點(diǎn)的例子中看看如何運(yùn)用它。但是在這之前,您應(yīng)該知道如何處理Web表格、查詢參數(shù)串,以及表單的GET方法和POST方法。不久之前我們剛剛有文章介紹這部分內(nèi)容,您如果對(duì)這一部分還不太熟悉的話可以看看那篇文章。 
現(xiàn)在,我們要處理查詢參數(shù)串,正如您所知道的,有三種方法可以把參數(shù)內(nèi)容寫入到查詢參數(shù)串中。第一種是在表格中使用GET方法;第二種是在瀏覽器的地址欄中輸入網(wǎng)址時(shí)直接加上查詢參數(shù);第三種是把查詢參數(shù)串嵌入到網(wǎng)頁(yè)的超鏈接中,使得超鏈接的內(nèi)容象下面這樣:<a href="http://my_machine/mypage.php3?id=1">。我們現(xiàn)在要用到最后這一種方法。 
一開始,我們?cè)賮?lái)查詢我們的數(shù)據(jù)庫(kù),列出員工姓名。看看下面的程序,其中大部分內(nèi)容我們都已經(jīng)很熟悉了。
復(fù)制代碼 代碼如下:
<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)) { 
  do { 
    printf("<a href="%s?id=%s">%s %s</a><br>n",  
    $PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]); 
  } while ($myrow = mysql_fetch_array($result)); 
} else { 
  echo "對(duì)不起,沒(méi)有找到記錄!";     

?> 
</body> 
</html>  


這里沒(méi)什么特別的,只是printf函數(shù)有些不同。那我們就來(lái)仔細(xì)研究一下。 
首先要注意的是,所有的引號(hào)前面都有一個(gè)反斜杠。這個(gè)反斜杠告訴php直接顯示后面的字符,而不能把后面的字符當(dāng)作程序代碼來(lái)處理。另外要注意變量$PATH_INFO的用法。該變量在所用程序中都可以訪問(wèn),是用來(lái)保存程序自身的名稱與目錄位置的。我們之所以用到它是因?yàn)橐陧?yè)面中再調(diào)用這個(gè)程序本身。使用$PATH_INFO,我們可以做到,即使程序被挪到其他目錄,甚至是其他機(jī)器上時(shí),我們也能保證正確地調(diào)用到這個(gè)程序。 
正如我剛才提到的,程序所生成的網(wǎng)頁(yè),其中包含的超鏈接會(huì)再次調(diào)用程序本身。不過(guò),再次調(diào)用時(shí),會(huì)加入一些查詢參數(shù)。 
php見到查詢參數(shù)串中包含有“名字=值”這樣的成對(duì)格式時(shí),會(huì)作一些特別的處理。它會(huì)自動(dòng)生成一個(gè)變量,變量名稱與取值都與查詢參數(shù)串中所給定的名稱和取值相同。這一功能使得我們可以在程序中判斷出是第一次執(zhí)行本程序還是第二次。我們所要做的只是問(wèn)問(wèn)php$id這個(gè)變量是否存在。 
當(dāng)我知道這個(gè)問(wèn)題的答案后,我可以在第二次調(diào)用程序時(shí)顯示一些不同的結(jié)果出來(lái)。請(qǐng)看:
復(fù)制代碼 代碼如下:
<html> 
<body> 
<?php 
$db = mysql_connect("localhost", "root"); 
mysql_select_db("mydb",$db); 
// display individual record 
// 顯示單條記錄內(nèi)容 
if ($id) { 
   $result = mysql_query("SELECT * FROM employees WHERE id=$id",$db); 
   $myrow = mysql_fetch_array($result); 
   printf("名: %sn<br>", $myrow["first"]); 
   printf("姓: %sn<br>", $myrow["last"]); 
   printf("住址: %sn<br>", $myrow["address"]); 
   printf("職位: %sn<br>", $myrow["position"]); 
} else { 
    // show employee list 
    // 顯示員工列表 
   $result = mysql_query("SELECT * FROM employees",$db); 
    if ($myrow = mysql_fetch_array($result)) { 
      // display list if there are records to display 
      // 如果有記錄,則顯示列表 
      do { 
        printf("<a href="%s?id=%s">%s %s</a><br>n", $PATH_INFO,  
        $myrow["id"], $myrow["first"], $myrow["last"]); 
      } while ($myrow = mysql_fetch_array($result)); 
    } else { 
      // no records to display 
      // 沒(méi)有記錄可顯示 
      echo "對(duì)不起,沒(méi)有找到記錄!";     
    } 

?> 
</body> 
</html>  
程序開始變得復(fù)雜了,所以我在這里面加了注釋,來(lái)解釋一下到底發(fā)生了什么。您可以用//加入單行注釋,或者用/*和*/來(lái)括住大段的注釋。 
到這里,我們已經(jīng)學(xué)會(huì)了第一個(gè)真正有用的php/MySQL腳本程序!現(xiàn)在,我們要看看怎樣把Web表格加進(jìn)來(lái),并且向數(shù)據(jù)庫(kù)發(fā)送數(shù)據(jù)。

第四頁(yè) 向服務(wù)器發(fā)送數(shù)據(jù) 
現(xiàn)在我們從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)已經(jīng)沒(méi)有太多困難了。但是怎么反過(guò)來(lái)向數(shù)據(jù)庫(kù)發(fā)送數(shù)據(jù)呢?其實(shí)這不是php的問(wèn)題。 
首選,我們創(chuàng)建一個(gè)帶有簡(jiǎn)單表格的網(wǎng)頁(yè)。
復(fù)制代碼 代碼如下:
<html> 
<body> 
<form method="post" action="<?php echo $PATH_INFO?>"> 
名:<input type="Text" name="first"><br>姓:<input type="Text" name="last"><br>住址:<input type="Text" name="address"><br>職位:<input type="Text" name="position"><br><input type="Submit" name="submit" value="輸入信息"> 
</form> 
</body> 
</html>  

php技術(shù)PHP_MySQL教程-第二天while循環(huán)與數(shù)據(jù)庫(kù)操作第1/2頁(yè),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产午夜理论片YY8840Y | 欧美顶级情欲片免费看 | 青柠在线观看视频在线高清 | 97在线免费观看 | 熟妇久久无码人妻AV蜜桃 | 亚洲地址一地址二地址三 | 和美女啪啪啪动态图 | 国产乱码免费卡1卡二卡3卡四卡 | 大胸美女被cao哭 | 老师的脚奴 | 夜色爽爽爽久久精品日韩 | 黑人开嫩苞 | 日韩亚洲国产中文字幕欧美 | 精品久久日日躁夜夜躁AV | 纯肉无码AV在线看免费看 | 日本高清免费看 | 亚洲精品国产乱码AV在线观看 | 日本免费一本天堂在线 | 黄页网站免费视频大全9 | 国产CHINESE HD精品 | 老头操美女 | 一手揉着乳头一手模仿抽插视频 | 少妇系列之白嫩人妻 | 精品视频在线观看视频免费视频 | 亚洲国产区中文在线观看 | 亚洲精品久久无码AV片WWW | 一本大道香蕉中文在线视频观看 | 狠狠色香婷婷久久亚洲精品 | 亚洲一区国产 | 免费成人高清在线视频 | 男女又黄又刺激B片免费网站 | 92看看福利午夜影院 | 玖玖在线精品 | 欧美高清视频www夜色资源网 | 俄罗斯大白屁股 | 麻豆蜜桃国语精品无码视频 | 亚洲一日韩欧美中文字幕在线 | 99视频偷窥在线精品国自产拍 | 伊人久久影视 | 久久a级片| 日本福利片午夜免费观着 |