PHP/MySQL三日通(3)

一、 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 代码,使得页面内容更加丰富。相信您会喜欢的。>>

时间: 2024-10-30 05:39:10

PHP/MySQL三日通(3)的相关文章

PHP/MySQL三日通(4)

四. 向服务器发送数据 现在我们从数据库读取数据已经没有太多困难了.但是怎么反过来向数据库发送数据呢?其实这不是PHP的问题. 首选,我们创建一个带有简单表格的网页. <html> <body> <form method="post" action="<?php echo $PATH_INFO?>"> 名:<input type="Text" name="first">

php &amp;amp; mysql三日通 3

mysql 一.基本函数 欢迎来到本教程的第三课,也是最后一课.如果您已经学过第一课和第二课,那么您已经掌握了MySQL和PHP的安装及编程的基本知识.下面我们要介绍PHP的一些其他函数,这些函数可能会对您有用,使您的开发过程更加简单.首先我们来看看头文件. 大家应该知道头文件的一些基本概念吧?头文件是一个外部文件,它的内容被包含到主程序中.方法也十分简单:在程序文件中引用头文件名,这个头文件就会包含进来了.在PHP中使用头文件,会涉及两个函数:include()和require().这两个函数

php &amp;amp; mysql三日通 2

mysql 一. while循环 在这一课里,我们将会继续深入下去,使用PHP和MySQL来写出一些简单而有用的页面.我们从昨天创建的数据库开始,显示库中的数据,但是会再稍微加以润色. 首先,我们用下面的代码来查询数据库内容. <html><body><?php$db = mysql_connect("localhost", "root");mysql_select_db("mydb",$db);$result =

PHP+MYSQL三日通

mysql 一.PHP/MySQL简介 您应该听说过开放源代码软件(OSS),除非最近六到八个月来您一直住在火星上.这场运动有着巨大的冲击力,已引起一些大公司的注意.象Oralce.Informix,还有多家公司都开始把他们的主力数据库产品移植到OSS的产物之一 - Linux操作系统上. 如果您有足够的技术力量,拥有一个复杂庞大的关系数据库系统(RDBMS)则是如虎添翼.但是也许您对数据库还刚刚入门,您刚刚读了Jay的文章,决定自己也来搞一个数据驱动的网站.可是您也许会发现您缺乏必要的资源来运

php &amp;amp; mysql 三日通

mysql 一.PHP/MySQL简介 您应该听说过开放源代码软件(OSS),除非最近六到八个月来您一直住在火星上.这场运动有着巨大的冲击力,已引起一些大公司的注意.象Oralce.Informix,还有多家公司都开始把他们的主力数据库产品移植到OSS的产物之一 - Linux操作系统上. 如果您有足够的技术力量,拥有一个复杂庞大的关系数据库系统(RDBMS)则是如虎添翼.但是也许您对数据库还刚刚入门,您刚刚读了Jay的文章,决定自己也来搞一个数据驱动的网站.可是您也许会发现您缺乏必要的资源来运

php与mysql三日通-第三天

mysql 一.基本函数 欢迎来到本教程的第三课,也是最后一课.如果您已经学过第一课和第二课,那么您已经掌握了MySQL和PHP的安装及编程的基本知识.下面我们要介绍PHP的一些其他函数,这些函数可能会对您有用,使您的开发过程更加简单.首先我们来看看头文件. 大家应该知道头文件的一些基本概念吧?头文件是一个外部文件,它的内容被包含到主程序中.方法也十分简单:在程序文件中引用头文件名,这个头文件就会包含进来了.在PHP中使用头文件,会涉及两个函数:include()和require().这两个函数

php与mysql三日通-第二天

mysql 一. while循环 在这一课里,我们将会继续深入下去,使用PHP和MySQL来写出一些简单而有用的页面.我们从昨天创建的数据库开始,显示库中的数据,但是会再稍微加以润色. 首先,我们用下面的代码来查询数据库内容. <html><body><?php$db = mysql_connect("localhost", "root");mysql_select_db("mydb",$db);$result =

php与mysql三日通-第一天

mysql 一.PHP/MySQL简介 您应该听说过开放源代码软件(OSS),除非最近六到八个月来您一直住在火星上.这场运动有着巨大的冲击力,已引起一些大公司的注意.象Oralce.Informix,还有多家公司都开始把他们的主力数据库产品移植到OSS的产物之一 - Linux操作系统上. 如果您有足够的技术力量,拥有一个复杂庞大的关系数据库系统(RDBMS)则是如虎添翼.但是也许您对数据库还刚刚入门,您刚刚读了Jay的文章,决定自己也来搞一个数据驱动的网站.可是您也许会发现您缺乏必要的资源来运

PHP/MySQL三日通-第二天(一)

  一. while循环  在这一课里,我们将会继续深入下去,使用PHP和MySQL来写出一些简单而有用的页面.我们从昨天创建的数据库开始,显示库中的数据,但是会再稍微加以润色. 首先,我们用下面的代码来查询数据库内容. $#@60;html$#@62; $#@60;body$#@62; $#@60;?php $db = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db)

PHP/MySQL三日通-第一天(一)

本文介绍堪称Web数据库黄金组合的PHP/MySQL如何构筑一个网络数据库应用的方法,PHP是一个类似微软ASP的服务器端的嵌入式超文本处理语言,是建立动态网站的强大工具.而MySQL是一个轻型SQL数据库服务器,可运行在多种平台上,包括Windows NT和Linux,它还有一个GPL版本,MySQL被认为是建立数据库驱动的动态网站的最佳产品.PHP.MySQL和Apache是Linux平台网站的最佳拍档.该教程是一个3日课程,从安装到应用都有详细描述.一.PHP/MySQL简介 您应该听说过