<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("名: %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>
到这里,我们已经学会了第一个真正有用的PHP/MySQL脚本程序!现在,我们要看看怎样把Web表格加进来,并且向数据库发送数据。
第四页 向服务器发送数据
现在我们从数据库读取数据已经没有太多困难了。但是怎么反过来向数据库发送数据呢?其实这不是PHP的问题。
首选,我们创建一个带有简单表格的网页。
复制代码 代码如下: