服务器 频道

php与mysql三日通之第二课

五、修改数据

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

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

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

<html>

<body>

<?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);

?>

<form method="post" action="<?php echo $PATH_INFO?>">

<input type=hidden name="id" value="<?php echo $myrow["id"] ?>">

名:<input type="Text" name="first" value="<?php echo
$myrow["first"] ?>"><br>

姓:<input type="Text" name="last" value="<?php echo
$myrow["last"] ?>"><br>

住址:<input type="Text" name="address" value="<?php echo
$myrow["address"] ?>"><br>

职位:<input type="Text" name="position" value="<?php echo
$myrow["position"] ?>"><br>

<input type="Submit" name="submit" value="输入信息">

</form>

<?php

} else {

// 显示员工列表

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

while ($myrow = mysql_fetch_array($result)) {

printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PATH_INFO,
$myrow["id"], $myrow["first"], $myrow["last"]);

}

}

?>

</body>

</html>

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

<html>

<body>

<?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);

?>

<form method="post" action="<?php echo $PATH_INFO?>">

<input type=hidden name="id" value="<?php echo $myrow["id"] ?>">

名:<input type="Text" name="first" value="<?php
echo $myrow["first"] ?>"><br>

姓:<input type="Text" name="last" value="<?php echo
$myrow["last"] ?>"><br>

住址:<input type="Text" name="address" value="<?php echo
$myrow["address"] ?>"><br>

职位:<input type="Text" name="position" value="<?php echo
$myrow["position"] ?>"><br>

<input type="Submit" name="submit" value="输入信息">

</form>

<?php

}

} else {

// 显示员工列表

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

while ($myrow = mysql_fetch_array($result)) {

printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PATH_INFO,
$myrow["id"], $myrow["first"], $myrow["last"]);

}

}

?>

</body>

</html>

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

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

六、完整的程序

  在本课结束前,我们要把所有东西加入到一个程序中,使它具有增加、编辑修改、删除记录的功能。这是前面所有内容的一个延伸,也可以作为极好的复习方法。看看下面的程序。

<html>

<body>

<?php

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

mysql_select_db("mydb",$db);

if ($submit) {


// 如果没有ID,则我们是在增加记录,否则我们是在修改记录

if ($id) {

$sql = "UPDATE employees SET first=''$first'',last=''$last'',
address=''$address'',position=''$position'' WHERE id=$id";

} else {

$sql = "INSERT INTO employees (first,last,address,position)
VALUES (''$first'',''$last'',''$address'',''$position'')";
}

// 向数据库发出SQL命令

$result = mysql_query($sql);

echo "记录修改成功!<p>";

} elseif ($delete) {

// 删除一条记录

$sql = "DELETE FROM employees WHERE id=$id";

$result = mysql_query($sql);

echo "记录删除成功!<p>";

} else {

// 如果我们还没有按submit按钮,那么执行下面这部分程序

if (!$id) {

// 如果不是修改状态,则显示员工列表 $result = mysql_query("SELECT * FROM employees",$db);

while ($myrow = mysql_fetch_array($result)) {

printf("<a href=\"%s?id=%s\">%s %s</a> \n",
$PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]);

printf("<a href=\"%s?id=%s&delete=yes\">(DELETE)</a><
br>", $PATH_INFO, $myrow["id"]);

}

}

?>

<P>

<a href="<?php echo $PATH_INFO?>">ADD A RECORD</a>

<P>

<form method="post" action="<?php echo $PATH_INFO?>">

<?php

if ($id) {


// 我们是在编辑修改状态,因些选择一条记录

$sql = "SELECT * FROM employees WHERE id=$id";

$result = mysql_query($sql);

$myrow = mysql_fetch_array($result);

$id = $myrow["id"];

$first = $myrow["first"];

$last = $myrow["last"];

$address = $myrow["address"];

$position = $myrow["position"];

// 显示id,供用户编辑修改

?>

<input type=hidden name="id" value="<?php echo $id ?>">

<?php

}

?>

名:<input type="Text" name="first" value="<?php echo $first ?>"><br>

姓:<input type="Text" name="last" value="<?php echo $last ?>"><br>

住址:<input type="Text" name="address" value="<?php echo $address ?>"><br>

职位:<input type="Text" name="position" value="<?php echo $position ?>"><br>

<input type="Submit" name="submit" value="输入信息">

</form>

<?php

}

?>

</body>

<`/html>

  这段程序看起来很复杂,但实际上并不难。程序主要有三个部分。第一个if()语句检查我们是否已经按下了那个“输入信息”的数据提交按钮。如果是,程序再检查$id是否存在。如果不存在,那我们就是在增加记录状态,否则,我们是在修改记录状态。

  接下来我们检查变量$delete是否存在。如果存在,我们是要删除记录。注意,第一个if()语句检查的是用POST方法发送来的变量,而这一次我们检查的是GET方法中传递过来的变量。

  最后,程序默认的动作是显示员工列表和表格。同样,我们要检查变量$id是否存在。如果存在,我们就根据它的值检索出相应的记录显示出来。否则,我们会显示一个空的表格。

  现在,我们已经把所学的东西全部都放在一个程序里头了。我们用到了while()循环,用到了if()语句,并且执行了全部的SQL基本操作 - SELECT、INSERT、UPDATE以及DELETE。另外,我们也知道如何在不同的网页之间通过URL和表格输入来互相传递信息。

0
相关文章