滚动
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,用于从多张表中进行查询。