PHP和MySQL入门(11)
我们之前曾经提到过while循环对于处理大量的数据来说是一个非常有用的控制语句,这是我们逐个处理结果集中数据行的代码的基本格式:
while ( $row = mysql_fetch_array($result) ) { // process the row... } |
在这个while循环中的条件可能看上去与我们曾经使用过的有所不同,所以我们有必要在这里解释它的工作机理。你可以先把这个条件看成一个独立的语句:
$row = mysql_fetch_array($result); |
mysql_fetch_array函数以一个参数(对于这个例子来说是存储在$result 变量中)接受到一个结果集,并以一个数据的形式返回结果集中 的下一行。如果你还不熟悉数组的概念,不要担心,我们会在下面详细讨论它。如果在这个结果集中不再有其它数据行时,mysql_fetch_array返 回逻辑假。
现在,我们上面的语句定义了一个值到$row变量中,与此同时,整个语句也获得了同样的值。这 就是我们在while循环的条件中使用这个语句的原因,因为 while循环会一直执行循环直到条件等于逻辑假,结果集有几行,这个循环就会执行几次,每一次$row都会得到一个下一行的值,现在剩下的就是如何在循 环中从$row变量中获得相应的值了。
结果集中的行被描述成一个数组。数组是一个特殊类型的变量,这个变量可以包含多个值,如果你把 一个变量看成是值的容器,你可以把数组看成是有间隔的容器, 在每一个间隔中可以存储一个单独的值。对于我们的数据行来说,这个间隔是以数据表的列名命名的。如果$row是我们结果集中的一行,那 么$row["JokeText"]就是这一行中JokeText列的值。所以如果我们想要显示我们的数据库中所在笑话的正文,while循环应该是这样 的:
while ( $row = mysql_fetch_array($result) ) { echo("<P>" . $row["JokeText"] . "</P>"); } |
最后,作为一个总结,这是一段完整的PHP的Web页面的代码,它用来连接我们的数据库,取出数据库中所有笑话的正文,并将其在HTML中显示出来:
<HTML> <HEAD> <TITLE> Our List of Jokes </TITLE> </HEAD> <BODY> <?php// Connect to the database server $dbcnx = @mysql_connect("localhost", "root", "mypasswd"); if (!$dbcnx) { echo( "<P>Unable to connect to the " . "database server at this time.</P>" ); exit(); } // Select the jokes database if (! @mysql_select_db("jokes") ) { echo( "<P>Unable to locate the joke " . "database at this time.</P>" ); exit(); } ?> <P> Here are all the jokes in our database: </P> <BLOCKQUOTE> <?php // Request the text of all the jokes $result = mysql_query( "SELECT JokeText FROM Jokes"); if (!$result) { echo("<P>Error performing query: " . mysql_error() . "</P>"); exit(); } // Display the text of each joke in a paragraph while ( $row = mysql_fetch_array($result) ) { echo("<P>" . $row["JokeText"] . "</P>"); } ?> </BLOCKQUOTE> </BODY> </HTML> |