当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

14.4使用PHP维护MySQL数据库的数据

9/17/2020 9:31:19 PM 人评论

14.4使用PHP维护MySQL数据库的数据

14.4 使用PHP维护MySQL数据库的数据

14.3节介绍了如何使用PHP函数操作数据库的查询结果集,并将结果集显示在页面上。这节介绍通过Web页面获取数据,向MySQL数据库添加或更新数据。

14.4.1 从页面获取数据并插入数据库

首先建立一个Web页面,供用户输入数据之用,该页可由代码14-9创建。

代码14-9 创建一个用来提交用户信息的HTML页面14-9.html


     01 <html>
     02 <head>
     03 <title>14-9.html</title>
     04 </head>
     05 
     06 <body>
     07 <b>
提交用户信息</b>
     08 <form name="form" method="post" action="14-10.php">
     09     <table width="75%" border="0" cellpadding="0" cellspacing="2">
     10         <tr> 
     11             <td width="24%" height="29">
用户名:</td>
     12             <td width="76%"><input name="user_name" type="text" id="user_name"                                     size="20"></td>
     13         </tr>
     14         <tr> 
     15         <td height="25">
来自城市:</td>
     16         <td>
     17             <select name="city">
     18             <option value="Beijing">
北京</option>
     19             <option value="London">
伦敦</option>
     20             <option value="NewYork">
纽约</option>
     21             <option value="Paris">
巴黎</option>
     22             <option value="Rome">
罗马</option>
     23         </select>
     24                 </td>
     25         </tr>
     26         <tr> 
     27             <td height="31">
     28             <input type="submit" name="Submit" value="
提交"></td>
     29             <td>&nbsp;</td>
     30         </tr>
     31     </table>
     32 </form>
     33 </body>
     34 </html>

图14-11 提交用户信息的页面

【代码解析】代码第08行的action属性决定本页面在执行第28行代码后的目的地。第17~23行是一个下拉列表框,允许用户选择指定的这5个城市。代码的运行效果如图14-11所示。

由代码14-9可以看出,该页面的表单将会提交给14-10.php处理。在14-10.php中完成获取表单数据,并将表单数据插入数据库。代码14-10就是14-10.php的程序代码。

代码14-10 获取表单数据并将数据插入数据库14-10.php


     01 <?php
     02 $host = 'localhost';
     03 $user_name = 'root';
     04 $password = 'admin';
     05 
     06 //
通过POST
方法传入的表单数据
     07 $name = $_POST['user_name'];
     08 $city = $_POST['city'];
     09 
     10 if(empty($name) || trim($name)=='')    //
判断用户名是否为空或者空格
     11 {
     12     echo '
请填写用户名!<a href="14-9.html">
返回</a>';
     13     exit;
     14 }
     15 
     16 $conn = mysql_connect($host,$user_name,$password);
     17 if(!$conn)
     18 {
     19     die('
数据库连接失败:'.mysql_error());
     20 }
     21 mysql_select_db('test');
     22 
     23 //
表users
中的created_time
字段使用通过MySQL
函数NOW()
取得的系统时间
     24 $sql = "insert into users set id=7,name='" . $name . "',city='" . $city .                               "',created_time=NOW()";
     25 mysql_query($sql) OR die("<br/>ERROR: <b>".mysql_error()."</b><br/>SQL
:".$sql);
     26 mysql_close($conn);
     27 
     28 echo '
数据插入成功,打开<a href="14-7.php">14-7.php</a>
查看数据';
     29 ?>

【代码解析】这段代码首先获取表单数据,当用户提交数据不为空(或空格)时,就会向数据库插入一条记录。当数据成功插入数据库后,代码14-10会输出一个成功信息,并给出到14-7.php的链接,程序14-7.php提供了对表users数据的查询,通过浏览14-7.php查看表users中的所有数据,可以验证程序14-10是否完成了数据插入操作。

说明 代码14-10中的SQL语句给表users的字段id赋值为7,事实上,表的字段id设为主键时,通常也会设置为自动增加(ATUO_INCREMENT),但在第12章创建users表时,并未设置其字段id为自动增加,所以,代码14-10的SQL语句直接为其赋值为7。如果表users中的id字段设置为自动增加,那么程序中的SQL语句可以不为其赋值,MySQL在执行插入时会为字段id赋值,所赋值为字段id当前最大的值加1。

14.4.2 根据表单内容修改数据库数据

通过程序数据修改数据库数据,和通过程序向数据库插入数据很类似,从程序角度看,一个是通过PHP程序执行插入操作(INSERT语句),另外一个是执行更新操作(UPDATE语句)。

通过PHP程序实现更新操作,首先需要一个显示数据的Web页面。另外,要根据不同的URL参数,该Web页面显示不同用户的信息,因此,该页面应该由内嵌在HTML文档中的PHP程序完成。然后,在这个页面修改用户数据,最后提交表单,由程序完成数据库数据的修改。代码14-11即用来在Web页面显示用户数据,它由内嵌PHP代码的HTML文档实现,并在其中实现了用户信息的更新。该页面和代码14-9实现的提交用户信息的页面几乎完全一样,只是该页面根据URL参数,将不同的用户数据显示在页面的表单元素里。

代码14-11 显示用户信息的页面14-11.php


     01 <?php
     02 $host = 'localhost';                                    //
定义服务器 
     03 $user_name = 'root';                                    //
定义用户名 
     04 $password = 'admin';                                    //
定义密码   
     05 
     06 //
页面中的城市列表将有数组生成
     07 $arr_city = array('Beijing'=>'
北京','NewYork'=>'
纽约','Paris'=>'
巴黎','London'=>'         
伦敦','Rome'=>'
罗马');
     08 
     09 $conn = mysql_connect($host,$user_name,$password);      //
连接MySQL
     10 if(!$conn)
     11 {
     12     die('
数据库连接失败:'.mysql_error());
     13 }
     14 mysql_select_db('test');                                //
选择数据库
     15 
     16 if(!isset($_GET['uid']))                                //
获取所要显示数据的用户的id
     17 {
     18     echo '
参数错误!';
     19     exit;
     20 }
     21 $id = $_GET['uid'];
     22 
     23 $sql = "select * from users where id=$id";
     24 $result = mysql_query($sql) OR die("<br/>ERROR: <b>".mysql_error()."</b><br/>SQL
:               ".$sql);
     25 if(!mysql_num_rows($result))
     26 {
     27     echo '
用户ID
错误!';
     28     exit;
     29 }
     30 
     31 $row = mysql_fetch_array($result);
     32 
     33 $name = $_POST['user_name'];
     34 $city = $_POST['city'];
     35 if(!empty($name) || trim($name)!='')    //
当页面有POST
数据传入时,则修改数据库数据
     36 {
     37     $sql = "update users set name='" . $name . "',city='" . $city . "' where id=$id";
     38     mysql_query($sql) OR die("<br/>ERROR: <b>".mysql_error()."</b><br/>SQL
:".$sql);
     39     mysql_close($conn);
     40 
     41     echo '
数据修改成功,打开<a href="14-7.php">14-7.php</a>
查看数据';
     42     exit;
     43 }
     44 ?>
     45 
     46 <html>
     47 <head>
     48 <title>14-11.php</title>
     49 </head>
     50 
     51 <body>
     52 <b>
修改用户信息</b>
     53 <form name="form" method="post" action="14-11.php?uid=<?php echo $id; ?>">
     54     <table width="75%" border="0" cellpadding="0" cellspacing="2">
     55         <tr> 
     56             <td width="24%" height="29">
用户名:</td>
     57             <td width="76%"><input name="user_name" type="text" id="user_name"                                        size="20" 
     58 value="<?php echo $row['name']; ?>"></td>
     59         </tr>
     60         <tr> 
     61         <td height="25">
来自城市:</td>
     62         <td>
     63         <select name="city">
     64         <?php
     65         //
通过数组循环,生成页面上城市选项的下拉列表
     66         foreach($arr_city as $k=>$v)
     67         {
     68          //
这里根据字段的值和数组中的索引值,使用三目运算符 ? : 
做用户来自哪个城市的判断,
     69                 //
如果city
字段的值和数组循环中的某个城市的索引值相等,则将用户的城市在下拉列表中选中
     70             $option = ($row['city'] == $k) ? '<option value="'.$k.'"                                                           selected>' .$v.'</option>' : '<option 
     71 value="'.$k.'">'.$v.'</option>';
     72             echo $option.'\n';
     73         }    
     74         ?>
     75         </select>
     76         </td>
     77         </tr>
     78         <tr>
     79         <td>
注册时间:</td>
     80         <td><?php echo $row['created_time']; ?></td>
     81         </tr>
     82         <tr> 
     83             <td height="31">
     84             <input type="submit" name="Submit" value="
修改"></td>
     85             <td>&nbsp;</td>
     86         </tr>
     87     </table>
     88 </form>
     89 </body>
     90 </html>

【代码解析】这段程序即实现了向Web页面显示某一用户的数据,同时也完成了根据页面传入的数据,修改数据库中对应用户的信息。更新操作成功后,代码14-11会显示一个信息,并给出到14-7.php的链接,以便验证更新操作是否成功并且正确。代码14-11显示用户数据的效果如图14-12所示。读者要注意页面URL中传递过来的参数$_GET['uid']。

14.4.3 通过PHP删除数据库数据

对程序14-7.php稍作修改,在用户列表中添加一列,在这一列为每个用户行添加加删除链接,这个链接将链接到一个完成删除功能的PHP程序,如图14-13所示。这个页面由代码14-12实现。

图14-12 用户信息修改界面

图14-13 添加删除链接的用户信息列表

代码14-12 为用户信息列表添加“删除”链接14-12.php


     01 <?php
     02 $host = 'localhost';                                    //
定义服务器 
     03 $user_name = 'root';                                    //
定义用户名 
     04 $password = 'admin';                                    //
定义密码   
     05 
     06 $conn = mysql_connect($host,$user_name,$password);      //
连接MySQL
     07 if(!$conn)
     08 {
     09     die('
数据库连接失败:'.mysql_error());
     10 }
     11 mysql_select_db('test');                                //
选择数据库
     12 
     13 $sql = 'select id,name,city,created_time from users';
     14 
     15 $result = mysql_query($sql) OR die("<br/>ERROR: <b>".mysql_error()."</b><br/>
产生         
问题的SQL
:".$sql);
     16 ?>
     17 <html>
     18 <head>
     19 <title>14-12.php</title>
     20 <script language="javascript">
     21 
     22 </script>
     23 </head>
     24 <center>
     25 
     26 <body>
     27 <table width="75%" border="0" cellpadding="0" cellspacing="1" bgcolor="#7B7B84">
     28     <tr bgcolor="#8BBCC7"> 
     29         <td height="33"><div ><strong>
用户ID</strong></div></td>
     30         <td><div ><strong>
用户名称</strong></div></td>
     31         <td><div ><strong>
来自城市</strong></div></td>
     32         <td><div ><strong>
注册时间</strong></div></td>
     33         <td><div ><strong>
操作</strong></div></td>
     34     </tr>
     35 
     36 <?php
     37 if($num = mysql_num_rows($result))
     38 {
     39     while($row = mysql_fetch_array($result,MYSQL_ASSOC))
     40     {
     41 ?>
     42     <tr bgcolor="#FFFFFF"> 
     43         <td height="22" ><?php echo $row['id']; ?>&nbsp;</td>
     44         <td height="22">&nbsp;<?php echo $row['name']; ?>&nbsp;</td>
     45         <td height="22">&nbsp;<?php echo $row['city']; ?>&nbsp;</td>
     46         <td height="22">&nbsp;<?php echo $row['created_time']; ?>&nbsp;</td>
     47         <td height="22">&nbsp;<a onclick="javascript:if(confirm('
确定要删除用户信息吗?'))
     48  return true; else return false;" href="14-14.php?id=<?php echo $row['id']; ?>">                        
删除</a>&nbsp;</td>
     49     </tr>
     50 <?php
     51     }
     52 }
     53 mysql_close($conn);
     54 ?>
     55 
     56 </table>
     57 </body>
     58 </center>
     59 </html>

图14-14 删除确认对话框

【代码解析】第47行代码使用confirm()函数来弹出一个确认对话框。第48行的href属性指定链接目的地并传递一个id参数。

当用户在页面点击“删除”链接时,首先会弹出一个JavaScript确认对话框,如图14-14所示。

如果在这个JavaScript确认对话框中单击“取消”按钮,程序则仍然停留在该页面。如果单击“确定”按钮,那么程序就会链接到14-14.php,在这个程序中完成从数据库中删除用户数据。请读者仔细看一下代码中JavaScript是如何实现确认和取消功能的。

代码14-13 在PHP中删除数据库数据14-14.php


     01 <?php
     02 if(!isset($_GET['id']))
     03 {
     04     echo '
参数错误!';
     05     exit;
     06 }
     07 
     08 $id = $_GET['id'];
     09 if(empty($id))
     10 {
     11     echo '
用户ID
不能为空!';
     12     exit;
     13 }
     14 
     15 $host = 'localhost';                                    //
定义服务器 
     16 $user_name = 'root';                                    //
定义用户名 
     17 $password = 'admin';                                    //
定义密码   
     18 
     19 $conn = mysql_connect($host,$user_name,$password);      //
连接MySQL
     20 if(!$conn)
     21 {
     22     die('
数据库连接失败:'.mysql_error());
     23 }
     24 mysql_select_db('test');                                //
选择数据库
     25 
     26 //
先判断是否存在该ID
的用户
     27 $sql = "select * from users where id=$id";
     28 $result = mysql_query($sql) OR die("<br/>ERROR: <b>".mysql_error()."</b><br/>SQL
:               ".$sql);
     29 if(!mysql_num_rows($result))
     30 {
     31     echo '
用户ID
错误!';
     32     exit;
     33 }
     34 
     35 //
删除用户数据
     36 $sql = "delete from users where id=$id";
     37 mysql_query($sql) OR die("<br/>ERROR: <b>".mysql_error()."</b><br/>SQL
:".$sql);
     38 mysql_close($conn);
     39 
     40 echo '
数据删除成功,返回<a href="14-12.php">14-12.php</a>
查看数据';
     41 ?>

【代码解析】程序最关键的是第08行和第36行,第08行获取传递过来的id参数,第36行执行删除数据的SQL语句。和修改数据一样,删除数据成功后,14-14.php会向Web页面显示一条到用户信息列表页面的链接,以便通过浏览用户列表,验证删除操作是否正确执行。

相关教程

共有条评论 网友评论

验证码: 看不清楚?