我正在为班级制作一款游戏,并且我决定添加一个评论系统,以便报告评论。我创建了一个名为comments
的表格和名为report_active
的表格中的一列。当用户报告评论时,该列中的值变为1.然后在adminCP中列出在active_report
列中具有1的所有评论。如何检查ID是否不存在..?
有一个名为comments.php
的文件,其中列出了所有注释并允许用户添加新注释。在每条评论旁边,我添加了一个链接到名为report_comment.php
的文件的报告按钮。我用这个文件来运行更新查询。
这个文件看起来是这样的:
<?php
session_start();
require_once('db_connect.php');
require_once('security.php');
if (isset($_GET['id'])) {
$report_active = 1;
$id = $_GET['id'];
$update = $db->prepare("UPDATE comments set report_active = ? WHERE id = ?");
$update->bind_param('ii', $report_active, $id);
if ($update->execute()) {
$_SESSION['reported'] = 'reported';
header('Location: comments.php');
die();
}
} else {
header('Location: comments.php');
}
?>
会话变量$_SESSION['reported']
是我用来determin是否显示警报它说评论报道,那么我取消设置会话的用户。
我所问的是我怎么能检查是否一个ID发来的$_GET
要求确实存在,如果它不然后运行通常$_SESSION['reported']
,如果没有再设置一个新的会话$_SESSION['errorReport']
然后显示与错误警报?
我曾尝试:
if ($update->execute() && $update->num_rows) {
然而这没有奏效。
有没有另外一种方法可以做到这一点?
我很抱歉没有在高级中回答你的问题,但你真的应该重新考虑你的数据库的架构。使用标志来表示关系是一种不好的做法。您应该使用连接来连接两个表,并检查是否有任何匹配的行可以指示报表是否处于活动状态。请查找连接,外键和SQL关系。 – PressingOnAlways
我刚刚访问过:http://www.w3schools.com/sql/sql_foreignkey.asp。我同意这是一个更好的方法。我这样做的原因是因为它只是一个小小的任务,我不觉得有必要创建多个表,而不会被大量使用。尽管我会将它作为一个更大的公共应用程序的选项来写。 – user3481788