澳门新葡萄京官网注册PHP/MySQL三日通-第二天(三)

一、 while循环

五、修改数据

本文转自:

在这一课里,我们将会继续深入下去,使用PHP和MySQL来写出一些简单而有用的页面。我们从昨天创建的数据库开始,显示库中的数据,但是会再稍微加以润色。

在个教程中,我都把要执行的SQL语句放到一个变量中,然后才用mysql_query()来执行数据库查询。在调试时这是很有用的。如果程序出了什么问题,您随时可以把SQL语句的内容显示出来,检查其中的语法错误。

作者:Sam(甄峰) sam_code@hotmail.com

首先,我们用下面的代码来查询数据库内容。

我们已经学习了如何把数据插入到数据库中。现在我们来学习如何修改数据库中已有的记录。数据的编辑包括两部分:数据显示和通过表格输入把数据返回给数据库,这两部分我们前面都已经讲到了。然而,数据编辑还是有一点点不同,我们必须先在表格中显示出相关的数据。

 

$#@60;html$#@62;$#@60;body$#@62;$#@60;?php$db =
mysql_connect(“localhost”,
“root”);mysql_select_db(“mydb”,$db);$result = mysql_query(“SELECT *
FROM employees”,$db);echo “$#@60;table border=1$#@62;/n”;echo
“$#@60;tr$#@62;$#@60;td$#@62;姓名$#@60;/td$#@62;$#@60;td$#@62;职位$#@60;/td$#@62;$#@60;/tr$#@62;/n”;while
($myrow = mysql_fetch_row($result))
{printf(“$#@60;tr$#@62;$#@60;td$#@62;%s
%s$#@60;/td$#@62;$#@60;td$#@62;%s$#@60;/td$#@62;$#@60;/tr$#@62;/n”,
$myrow[1], $myrow[2], $myrow[3]);}echo
“$#@60;/table$#@62;/n”;?$#@62;$#@60;/body$#@62;$#@60;/html$#@62;

首先,我们回过头再看看第一课的程序代码,在网页中显示员工姓名。但是这次,我们要把数据显示在表格中。程序看起来象下面这样:

这段时间Sam需要建立一个STB使用的网站。有同事推荐了AppServ,这个软件安装MySQL和Apache,PHP,并自动配置,很是方便。但考虑到未来可能还需要将LUA,Perl,ASP等。还是自己依次安装配置更有可控性。

您可能已经注意到,我们在这个程序里加进了一些新东西。最明显的是while()循环。该循环是说,只要数据库里还有记录可读,那就把该记录赋给变量$myrow,然后执行大括号内的指令。仔细看一下这里,这部分是比较重要的。

$#@60;html$#@62;$#@60;body$#@62;$#@60;?php$db =
mysql_connect(“localhost”, “root”);mysql_select_db(“mydb”,$db);if
($id) {// 查询数据库$sql = “SELECT * FROM employees WHERE
id=$id”;$result = mysql_query($sql); $myrow =
mysql_fetch_array($result);?$#@62;$#@60;form method=”post”
action=”$#@60;?php echo $PATH_INFO?$#@62;”$#@62;$#@60;input
type=hidden name=”id” value=”$#@60;?php echo $myrow[“id”]
?$#@62;”$#@62;名:$#@60;input type=”Text” name=”first”
value=”$#@60;?php echo $myrow[“first”]
?$#@62;”$#@62;$#@60;br$#@62;姓:$#@60;input type=”Text”
name=”last” value=”$#@60;?php echo $myrow[“last”]
?$#@62;”$#@62;$#@60;br$#@62;住址:$#@60;input type=”Text”
name=”address” value=”$#@60;?php echo $myrow[“address”]
?$#@62;”$#@62;$#@60;br$#@62;职位:$#@60;input type=”Text”
name=”position” value=”$#@60;?php echo $myrow[“position”]
?$#@62;”$#@62;$#@60;br$#@62;$#@60;input type=”Submit” name= bmit”
value=”输入信息”$#@62;$#@60;/form$#@62;$#@60;?php} else {//
显示员工列表$result = mysql_query(“SELECT * FROM employees”,$db);while
($myrow = mysql_fetch_array($result)) {printf(“$#@60;a
href=/”%s?id=%s/”$#@62;%s %s$#@60;/a$#@62;$#@60;br$#@62;/n”,
$PATH_INFO, $myrow[“id”], $myrow[“first”],
$myrow[“last”]);}}?$#@62;$#@60;/body$#@62;$#@60;/html$#@62;

因为IIS要支持PHP,所以需要对IIS配置。而PHP与MySQL连接很好。

我们应该注意一下mysql_fetch_row()函数。这里有一点小问题,它返回的是一个数组,必须以数组下标来访问其中的某个字段。第一个字段下标为0,第二个是1,依此类推。在执行某些复杂查询时,这么做简直实在是太烦琐了。

我们刚才是把字段内容写入到相应表格元素中的value属性里,这是相应简单的。我们再往前进一步,使程序可以把用户修改过的内容写回数据库去。同样,我们通过Submit按钮来判断是否处理表格输入内容。还要注意,我们用的SQL语句稍稍有些不同。

 

现在我们更仔细地研究一下循环过程。程序前几行我们在第一课的例子中已经看到过了。然后,在while()循环中,我们从查询结果中读取一条记录并把该记录赋给数组$myrow。接着,我们用printf函数把数据中的内容显示在屏幕上。随后,循环反复执行,读取下一条记录赋给$myrow。这样继续下去,直到所有记录都已被读取完为止。

$#@60;html$#@62;$#@60;body$#@62;$#@60;?php$db =
mysql_connect(“localhost”, “root”);mysql_select_db(“mydb”,$db);if
($id) {if ($submit) {$sql = “UPDATE employees SET
first=$first,last=$last,address=$address,position=$position WHERE
id=$id”;$result = mysql_query($sql);echo “谢谢!数据更改完成/n”;} else
{// 查询数据库$sql = “SELECT * FROM employees WHERE id=$id”;$result =
mysql_query($sql); $myrow =
mysql_fetch_array($result);?$#@62;$#@60;form method=”post”
action=”$#@60;?php echo $PATH_INFO?$#@62;”$#@62;$#@60;input
type=hidden name=”id” value=”$#@60;?php echo $myrow[“id”]
?$#@62;”$#@62;名:$#@60;input type=”Text” name=”first”
value=”$#@60;?phpecho $myrow[“first”]
?$#@62;”$#@62;$#@60;br$#@62;姓:$#@60;input type=”Text”
name=”last” value=”$#@60;?php echo $myrow[“last”]
?$#@62;”$#@62;$#@60;br$#@62;住址:$#@60;input type=”Text”
name=”address” value=”$#@60;?php echo $myrow[“address”]
?$#@62;”$#@62;$#@60;br$#@62;职位:$#@60;input type=”Text”
name=”position” value=”$#@60;?php echo $myrow[“position”]
?$#@62;”$#@62;$#@60;br$#@62;$#@60;input type=”Submit”
name=”submit” value=”输入信息”$#@62;$#@60;/form$#@62;$#@60;?php}}
else {// 显示员工列表$result = mysql_query(“SELECT * FROM
employees”,$db);while ($myrow = mysql_fetch_array($result))
{printf(“$#@60;a href=/”%s?id=%s/”$#@62;%s
%s$#@60;/a$#@62;$#@60;br$#@62;/n”, $PATH_INFO, $myrow[“id”],
$myrow[“first”],
$myrow[“last”]);}}?$#@62;$#@60;/body$#@62;$#@60;/html$#@62;

一:软件准备:

使用while()循环?
个好处是,如果数据库查询没有返回任何记录,那您也不会收到错误信息。在刚执行循环语句时,循环条件就不满足,不会有任何数据赋给$myrow,程序就直接往下运行了。

就是这样。在这个程序中已经包含了我们学过所大多数特性。您也已经看到,我们在一个if()条件判别语句中又加了一个if()语句,来检查多重条件。

  1. PHP(PHP-5.2.11)

但是如果查询未返回任何数据,我们怎么让用户知道这一点呢?我们也许该提供点儿相关的消息给用户吧。这是可以做到的,下面我们就看看怎么做。

下面,我们要把所有东西全都加在一起,写出一个很好的程序来。

二、 if-else

php-5.2.11-Win32.zip

请看下面的程序。

 

$#@60;html$#@62;$#@60;body$#@62;$#@60;?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
“$#@60;table border=1$#@62;/n”;echo
“$#@60;tr$#@62;$#@60;td$#@62;姓名$#@60;/td$#@62;$#@60;td$#@62;住址$#@60;/td$#@62;$#@60;/tr$#@62;/n”;do
{printf(“$#@60;tr$#@62;$#@60;td$#@62;%s
%s$#@60;/td$#@62;$#@60;td$#@62;%s$#@60;/tr$#@62;/n”,
$myrow[“first”], $myrow[“last”], $myrow[“address”]);} while
($myrow = mysql_fetch_array($result));echo “$#@60;/table$#@62;/n”;}
else {echo “对不起,没有找到记录!”;
}?$#@62;$#@60;/body$#@62;$#@60;/html$#@62;

  1. MySQL(5.4.2)

这段程序中包含有不少新内容,不过这些内容都相当简单。首先是mysql_fetch_array()函数。该函数与mysql_fetch_row()十分相近,只有一点不同:使用这个函数时,我们可以通过字段名而不是数组下标来访问它返回的字段,比如$myrow[“first”]。这样我们就可以省不少力气了。另外,程序中还加进了do/while循环和if-else条件判定语句。

http://dev.mysql.com/downloads

if-else条件判定语句的含意是,如果我们成功地把一条记录赋给了$myrow变量,那就继续;否则,就跳到else部分,执行那里的指令。

mysql-essential-5.4.2-beta-win32.msi

do/while循环是我们在上页中用户的while()循环的一个变体。我们要用到do/while的原因是:在最初的if语句中,我们已经把查询返回的第一条记录赋给变量$myrow了。如果这时我们执行一般的while循环,那我们就会把第二条记录赋给$myrow,而第一条记录就被冲掉了。但是do/while循环可以让我们执行一次循环体内容之后再来判定循环条件。因此,我们就不会不小心漏掉第一条记录了。

 

最后,如果查询结果没有任何记录的话,程序就会执行包含在else{}部分的那些语句。如果您想看到这部分程序的执行情况,可以把SQL语句改为SELECT
* FROM employees WHERE
id=6,或改成其他形式,使得查询结果中没有任何记录。

  1. PHPMyAdmin

下面我们来扩充一下循环if-else
代码,使得页面内容更加丰富。相信您会喜欢的。

phpMyAdmin-3.2.0.1-all-languages.zip

三、 第一个程序脚本

 

我们刚刚学到了循环语句,下面我们将在一个更加实际一点的例子中看看如何运用它。但是在这之前,您应该知道如何处理Web表格、查询参数串,以及表单的GET方法和POST方法。

 

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

二:软件安装设置:

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

 

$#@60;html$#@62;$#@60;body$#@62;$#@60;?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(“$#@60;a href=/”%s?id=%s/”$#@62;%s
%s$#@60;/a$#@62;$#@60;br$#@62;/n”, $PATH_INFO, $myrow[“id”],
$myrow[“first”], $myrow[“last”]);} while ($myrow =
mysql_fetch_array($result));} else {echo “对不起,没有找到记录!”;
}?$#@62;$#@60;/body$#@62;$#@60;/html$#@62;

1. PHP安装:

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

php-5.2.11-Win32.zip解开压缩之后,放置到C:publicphp-5.2.11-Win32中。

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

1.1 DLL文件copy:

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

将C:publicphp-5.2.11-Win32目录下的所有dll文件copy到c:Windowssystem32下.

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

 

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

1.2 可执行文件和ini文件的copy:

$#@60;html$#@62;$#@60;body$#@62;$#@60;?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$#@60;br$#@62;”,
$myrow[“first”]);printf(“姓: %s/n$#@60;br$#@62;”,
$myrow[“last”]);printf(“住址: %s/n$#@60;br$#@62;”,
$myrow[“address”]);printf(“职位: %s/n$#@60;br$#@62;”,
$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(“$#@60;a
href=/”%s?id=%s/”$#@62;%s %s$#@60;/a$#@62;$#@60;br$#@62;/n”,
$PATH_INFO, $myrow[“id”], $myrow[“first”], $myrow[“last”]);}
while ($myrow = mysql_fetch_array($result));} else {// no records to
display// 没有记录可显示echo “对不起,没有找到记录!”;
}}?$#@62;$#@60;/body$#@62;$#@60;/html$#@62;

将C:publicphp-5.2.11-Win32目录下的php.exe、php-win.exe和php.ini-dist三个文件拷到C:Windows
( Windows 2000 下为
C:WINNT)下;将C:Windowsphp.ini-dist改名为php.ini.

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

1.3. 修改PHP ini文件:

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

使用UltraEdit打开C:Windowsphp.ini

register_globals = Off

,将 Off 改成 On ;

extension_dir =

,并将其路径指到你的 PHP 目录下的 extensions 目录,比如:extension_dir
= “C:publicphp-5.2.11-Win32ext” ;
搜索找到

;Windows Extensions

将下面列举的

;extension=php_dbase.dll

可选

;extension=php_gd2.dll

这个是用来支持GD库的,一般需要,必选

 

;extension=php_ldap.dll

可选

;extension=php_mbstring.dll

这不选一般用PHPMYADMIN会出红色提示,故必选

  

;extension=php_mssql.dll

这个是用来支持MSSQL的,可选

  

;extension=php_mysql.dll

这个是用来支持MYSQL的,要支持MYSQL必选
将这些前的”;”去掉,其他的你需要的也可以去掉前面的;然后关闭保存该文件。

 

 

2. IIS配置:

IIS安装很简单,但要让它支持PHP,则需要做进一步配置。

 

PHP 支持 CGI 和 ISAPI 两种安装模式,推荐使用 ISAPI 模式。这里只解介绍
ISAPI 模式安装方法:

 

 

2.1: 添加ISAPI筛选器:

在“控制面板->性能和维护->管理工具->Internet
信息服务”中选择”默认网站”。停止之。

反键点选”默认网站”->属性->ISAPI筛选器,添加筛选器。

筛选器名称:”:PHP”

可执行文件:”C:publicphp-5.2.11-Win32php5isapi.dll”

Sam: 这里是给IIS指出:遇到PHP,使用php指定的筛选器.

 

2.2: 添加应用程序映射:

反键点选”默认网站”->属性->主目录->配置,添加应用程序映射。

.php和C:publicphp-5.2.11-Win32php5isapi.dll。

Sam:这里给IIS指出:遇到.php文件,使用何种程序解析之。

 

2.3: 添加文档index.php

反键点选”默认网站”->属性->文档

添加一个index.php.

可以将 index.php 升到最高优先级,这样,访问站点时就会首先自动寻找并打开
index.php 文档.

 

2.4. 重新启动IIS:

net stop w3svc
net stop iisadmin
net start w3svc

 

2.5.写index.php.

首先在反键点选”默认网站”->属性->主目录下看本地路径,通常为:C:Inetpubwwwroot

则在这个目录中建立:一个index.php,内容如下:

<?php
phpinfo();
?>

 

此时,IIS已经支持PHP。

使用浏览器:http://localhost

则出现php info页面,且Server API的模式为:ISAPI , MySQL也为Enable.

也许使用其他电脑http://ipaddr如:http://172.16.1.46
没有显示,请察看防火墙。

 

 

3. 安装配置MySQL:

3.1 安装MySQL:

运行mysql-essential-5.4.2-beta-win32.msi。

安装在C:Program FilesMySQLMySQL Server 5.4。

 

3.2 配置 MySQL:

开始菜单->MySQL->MySQL Server Instance Config Wizar.

基本顺序Next,Sam 只修改了字符集为gb2312. root密码也修改了。

 

3.3: PHP与MySQL连接:

如何验证PHP是否与MySQL连接成功呢,当然是使用PHP能够读取MySQL内容了。

 

PHP想要读取MySQL数据库内容,则需要MySQL首先有一个数据库。

3.3.1:创建MySQL数据库:

开始菜单-> run ->cmd
(因为之前安装MySQL时,已经选中了会安装到命令行,所以直接运行MySQL命令是可行的)

mysqladmin -u root -p654321 create mydb

因为之前Sam已经给root创建了密码:654321
所以创建database时需要使用-p来输入密码,否则server不允许连接。

 

3.3.2: 给database写入内容:

在C:Program FilesMySQLMySQL Server
5.4bin中创建mydb.dump文件,并写入内容如下:

 

CREATE TABLE employees
(
id tinyint(4)  NOT NULL AUTO_INCREMENT, 
first varchar(20), 
last varchar(20), 
address varchar(255), 
position varchar(50), 
PRIMARY KEY (id), 
UNIQUE id (id)
);

INSERT INTO employees VALUES (1,’Bob’,’Smith’,’128 Here St,
Cityname’,’Marketing Manager’);

INSERT INTO employees VALUES (2,’John’,’Roberts’,’45 There St ,
Townville’,’Telephonist’);

INSERT INTO employees VALUES (3,’Brad’,’Johnson’,’1/34 Nowhere Blvd,
Snowston’,’Doorman’);

命令行进入C:Program FilesMySQLMySQL Server 5.4bin目录,运行

mysql -u root -p654321 mydb < mydb.dump
将mydb.dump内容写入mydb 这个database了。

 

3.3.3:  PHP读取MySQL database:

程序如下:

<html>

<body>

<?php

$db = mysql_connect(“localhost”, “root”, “654321”);

mysql_select_db(“mydb”,$db);

$result = mysql_query(“SELECT * FROM employees”,$db);

printf(“First Name: %s<br>n”,
mysql_result($result,0,”first”));

printf(“Last Name: %s<br>n”, mysql_result($result,0,”last”));

printf(“Address: %s<br>n”,
mysql_result($result,0,”address”));

printf(“Position: %s<br>n”,
mysql_result($result,0,”position”));

?>

</body>

</html>

 

将之存储为test.php.

结果为:

First Name: Bob
Last Name: Smith
Address: 128 Here St, Cityname
Position: Marketing Manager

说明PHP已经可以读取MySQL数据库了。

 

 

 

三:PHP与MySQL进阶:

例1:

先研究一下上次PHP读取MySQL数据库的程序:

<html>
<body>

<?php

$db = mysql_connect(“localhost”, “root”, “654321”);

mysql_select_db(“mydb”,$db);

$result = mysql_query(“SELECT * FROM employees”,$db);

printf(“First Name: %s<br>n”,
mysql_result($result,0,”first”));

printf(“Last Name: %s<br>n”, mysql_result($result,0,”last”));

printf(“Address: %s<br>n”,
mysql_result($result,0,”address”));

printf(“Position: %s<br>n”,
mysql_result($result,0,”position”));

?>

</body>
</html>

 

讲解:

$db = mysql_connect(“localhost”, “root”, “654321”);

Open a connection to a MySQL Server,

参数1:MySQL Server. (连接到本地MySQL)

参数2:用户名:root

参数3:密码:654321

 

连接后,

mysql_select_db(“mydb”,$db);

db这个连接中, 读取database –mydb(之前建立的),也叫做Active database

$result = mysql_query(“SELECT * FROM employees”,$db);

从Active database中读取employees,resource
放到result中。利用刚才得到的连接结果标识,该函数把一行SQL语句送给MySQL服务器去处理。返回的结果保存在变量$result中。

 

mysql_result($result,0,”first”)

从resource(result)中取到first项,返回之。

参数2:表示first项目中的第几个。相当于index.因为result中放着全部的数据。

 

 

 

 

例2:

<html>

<body>

<?php

$db = mysql_connect(“localhost”, “root”, “654321”);

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[4]);
}

echo “</table>n”;

?>

</body>

</html>

 

讲解:

$db = mysql_connect(“localhost”, “root”, “654321”);

mysql_select_db(“mydb”,$db);

同上,用来连接MySQL Server.并选择Active Database.

 

$result = mysql_query(“SELECT * FROM employees”,$db);

把Active data中数据读取到result 中。

 

$myrow = mysql_fetch_row($result))

把result中的data读出一行来,也就是取出一个记录,放到myrow的数组中。则myrow[0],
myrow[1]…依次为0-n个数据。

 

 

 

例3:

<html>

<body>

<?php

$db = mysql_connect(“localhost”, “root”, “654321”);

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”]。

 

 

 

 

例4:超级链接和MySQL取数据:

<html>
<body>

<?php

$db = mysql_connect(“localhost”, “root”, “654321”);

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(“名: %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
  // 没有记录可显示

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

    }

}

?>

</body>
</html>

 

讲解

程序第一次进入时,id为空,则直接进入取数据打印为超级链接,其中PATH_INFO用来保存程序自身的名称与目录位置。

但如果点击超级链接,则又一次进入程序,此时id为对应ID号码,则打印此ID具体信息。

发表评论

电子邮件地址不会被公开。 必填项已用*标注