滚动
PHP课程 - 第3.4课 - 使用 MySQL 数据库。DELETE 删除查询。
在上一课中,我们学习了如何向我们的管理类 simpleCMS 添加新方法,现在让我们再添加一个用于删除记录的方法 delete()。
我们像往常一样添加方法:
public function delete($mid){ }
正如你所见,我们传递了一个参数 $mid —— 即记录的 ID。回想上一课,我们决定使用另一种方式传递参数,即直接通过 GET 请求,而这次我们将尝试用另一种方式传参。
方法已定义好,现在在 index.php 文件中编写路径处理:
switch ($_GET['admin']){ case 'add': print $obj->display_admin(); // 如果变量等于 add,则显示添加表单 break; case 'update': print $obj->display_update(); // 如果变量等于 update,则显示修改表单 break; case 'delete': if($_GET['mid']){ // 如果变量等于 delete,则检查 mid 是否存在 $obj->delete($_GET['mid']); // 调用删除消息方法 print $obj->display_public(); // 删除后重新显示消息 }else{ print '<p>未选择 mid!</p>'; print $obj->display_public(); // 显示消息列表 } break; default: print $obj->display_public(); // 如果变量不存在,则显示消息 }
为了使删除功能正常工作,URL 必须如下所示:
http://test/index.php?admin=delete&mid=7
在这种情况下,将删除 mid=7 的消息。现在来实现我们的 delete() 方法:
public function delete($mid){ mysql_query('DELETE FROM Messages WHERE mid='.$mid) or die(mysql_error()); }
我们来分析一下 MySQL DELETE 删除语句的结构。首先是关键字 DELETE,接着是操作符 FROM。在 FROM 后指定要删除记录的表名(注意! 如果不指定删除条件,将删除表中的所有记录!)。然后写出删除条件。在这里我们根据传入的参数 $mid 来删除对应的记录。最后我们加上查询执行的错误检查。
正如之前提到的,当 URL 中包含两个参数 admin=delete&mid=7 时,我们的方法就会被调用。为了方便,我们在每条消息下方添加链接,在 display_public() 方法中修改如下:
public function display_public() { // 输出消息方法 $content = ''; $sql = 'SELECT * FROM Messages ORDER BY mid DESC'; // 查询语句 $result = mysql_query($sql) or die(mysql_error()); // 将查询结果保存到变量中 while($row = mysql_fetch_array($result)){ // 使用 mysql_fetch_array() 处理结果集 $content .= '<div class="post" id="mid-' . $row['mid'] . '">'; // 包裹每条记录的 div $content .= '<span class="time">#' . $row['mid'] . ' 于 ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>'; // 输出时间和标题 $content .= '<p>' . $row['bodytext'] . '</p>'; // 输出消息文本 $content .= '<p>'; $content .= '<a href="/index.php?admin=update&mid=' . $row['mid'] . '">编辑消息</a>'; // 编辑链接 $content .= '<a href="/index.php?admin=delete&mid=' . $row['mid'] . '">删除消息</a>'; // 删除链接 $content .= '</p>'; $content .= '</div>'; // 结束 div } $content .= '<p><a href="/index.php?admin=add">添加新消息</a></p>'; return $content; }
现在,当点击“删除消息”链接时,该消息就会如预期被删除。这样就可以直接在网站上快速删除不需要的消息,而无需进入 PhpMyAdmin。
最后,我们只需为“编辑”和“删除”链接之间添加一点间距:
.post a{ padding-right: 5px; }
好了,本课就到这里。在下一课中,我们将学习另一个非常重要的操作符 —— JOIN,用于从多张表中进行查询。