五、修改数据
在个教程中,我都把要执行的SQL语句放到一个变量($sql)中,然后才用mysql_query()来执行数据库查询。在调试时这是很有用的。如果程序出了什么问题,您随时可以把SQL语句的内容显示出来,检查其中的语法错误。
我们已经学习了如何把数据插入到数据库中。现在我们来学习如何修改数据库中已有的记录。数据的编辑包括两部分:数据显示和通过表格输入把数据返回给数据库,这两部分我们前面都已经讲到了。然而,数据编辑还是有一点点不同,我们必须先在表格中显示出相关的数据。
首先,我们回过头再看看第一课的程序代码,在网页中显示员工姓名。但是这次,我们要把数据显示在表格中。程序看起来象下面这样:
$#@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; ", $PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]); } } ?$#@62; $#@60;/body$#@62; $#@60;/html$#@62; |
対応するテーブル要素の value 属性にフィールドの内容を書き込んだだけなので、比較的単純です。さらに一歩進んで、プログラムがユーザーが変更したコンテンツをデータベースに書き戻せるようにします。同様に、「送信」ボタンを使用して、フォーム入力コンテンツを処理するかどうかを決定します。また、使用する SQL ステートメントが若干異なることにも注意してください。
$#@60;html$#@62; $#@60;body$#@62; $#@60;?php $db = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); if ($id) { if ($submit) { $sql = "従業員の設定を更新します first=$first,last=$last, address= $address,position=$position WHERE id=$id"; $result = mysql_query($sql); echo "ありがとうございます! "; } else { // データベースのクエリ $sql = "SELECT * FROM 従業員 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="送信" name="送信" value="入力情報"$#@62; $#@60;/form$#@62; $ #@60;?php } } else { // 従業員リストを表示 $result = mysql_query("SELECT * FROM従業員",$db); while ($myrow = mysql_fetch_array( $result)) { printf("$#@60;a href="%s?id=%s"$#@62;%s %s$#@60;/a$#@62;$# @60;br$#@62; ", $PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]); } } ?$#@62; $#@ 60;/body$#@62; $#@60;/html$#@62; |
以上です。私たちが学んだ機能のほとんどがこのプログラムに含まれています。また、複数の条件をチェックするために if() 条件ステートメントに if() ステートメントを追加したこともわかりました。
次に、すべてを追加して適切なプログラムを作成します。