高级数据库技术 上一层 [软件下载] [累计得分] [教学论坛] [林定移教学辅助服务器] [关于林定移]

第二章3

第一章1 第二章1 第三章1


PHP/MySQL教程
第1节 while循环
第2节 if-else
第3节 第一个程序脚本
第4节 向服务器发送数据
第5节 修改数据
第6节 完整的程序

[第一章][第二章][第三章]

 

第3节 第一个程序脚本

我们刚刚学到了循环语句,下面我们将在一个更加实际一点的例子中看看如何运用它。但是在这之前,您应该知道如何处理Web表格、查询参数串,以及表单的GET方法和POST方法。不久之前我们刚刚有文章介绍这部分内容,您如果对这一部分还不太熟悉的话可以看看那篇文章。

现在,我们要处理查询参数串,正如您所知道的,有三种方法可以把参数内容写入到查询参数串中。第一种是在表格中使用GET方法;第二种是在浏览器的地址栏中输入网址时直接加上查询参数;第三种是把查询参数串嵌入到网页的超链接中,使得超链接的内容象下面这样:<a href="http://my_machine/mypage.php3?id=1">。我们现在要用到最后这一种方法。

一开始,我们再来查询我们的数据库,列出员工姓名。看看下面的程序,其中大部分内容我们都已经很熟悉了。


<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 "对不起,没有找到记录!";	

}

?>

</body>

</html>

这里没什么特别的,只是printf函数有些不同。那我们就来仔细研究一下。

首先要注意的是,所有的引号前面都有一个反斜杠。这个反斜杠告诉PHP直接显示后面的字符,而不能把后面的字符当作程序代码来处理。另外要注意变量$PATH_INFO的用法。该变量在所用程序中都可以访问,是用来保存程序自身的名称与目录位置的。我们之所以用到它是因为要在页面中再调用这个程序本身。使用$PATH_INFO,我们可以做到,即使程序被挪到其他目录,甚至是其他机器上时,我们也能保证正确地调用到这个程序。

正如我刚才提到的,程序所生成的网页,其中包含的超链接会再次调用程序本身。不过,再次调用时,会加入一些查询参数。

PHP见到查询参数串中包含有“名字=值”这样的成对格式时,会作一些特别的处理。它会自动生成一个变量,变量名称与取值都与查询参数串中所给定的名称和取值相同。这一功能使得我们可以在程序中判断出是第一次执行本程序还是第二次。我们所要做的只是问问PHP$id这个变量是否存在。

当我知道这个问题的答案后,我可以在第二次调用程序时显示一些不同的结果出来。请看:


<html>

<body>

<?php

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

// display individual record
// 显示单条记录内容

if ($id) {

   $result = mysql_query("SELECT * FROM employees WHERE id=$id",$db);

   $myrow = mysql_fetch_array($result);

   printf("名: %s\n<br>", $myrow["first"]);

   printf("姓: %s\n<br>", $myrow["last"]);

   printf("住址: %s\n<br>", $myrow["address"]);

   printf("职位: %s\n<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
	  // 没有记录可显示

      echo "对不起,没有找到记录!";	

    }

}

?>

</body>

</html>

程序开始变得复杂了,所以我在这里面加了注释,来解释一下到底发生了什么。您可以用//加入单行注释,或者用/*和*/来括住大段的注释。

到这里,我们已经学会了第一个真正有用的PHP/MySQL脚本程序!现在,我们要看看怎样把Web表格加进来,并且向数据库发送数据。>>


如有关于本站点的问题或建议,请向lin@bnu.edu.cn发邮件。 版权所有(C) 2000-2020  林定移教学辅助服务器