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> </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> </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']; ?> </td> 44 <td height="22"> <?php echo $row['name']; ?> </td> 45 <td height="22"> <?php echo $row['city']; ?> </td> 46 <td height="22"> <?php echo $row['created_time']; ?> </td> 47 <td height="22"> <a onclick="javascript:if(confirm(' 确定要删除用户信息吗?')) 48 return true; else return false;" href="14-14.php?id=<?php echo $row['id']; ?>"> 删除</a> </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页面显示一条到用户信息列表页面的链接,以便通过浏览用户列表,验证删除操作是否正确执行。
共有条评论 网友评论