我正在上课,我决定添加一个能够报告评论的评论系统。我创建了一个名为comments
的表和一个名为report_active
的表中的列。当用户报告评论时,该列中的值将更改为1.然后,active_report
列中包含1的所有评论都会列在adminCP中。
有一个名为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']
是我用来确定是否向用户显示警告评论报告,然后我取消设置会话。
我要问的是如何查看作为$_GET
请求发送的ID是否确实存在,如果确实存在,则运行通常的$_SESSION['reported']
,如果没有则设置新的会话{ {1}}然后显示错误提示?
我试过了:
$_SESSION['errorReport']
然而,这并没有奏效。
我还有另一种方式吗?
答案 0 :(得分:2)
您可以像现在一样执行查询,并使用 rowCount()
affected_rows
检查是否修改了任何行:
if ($update->execute()) {
if ($update->affected_rows > 0)
{
$_SESSION['reported'] = 'reported';
header('Location: comments.php');
die();
}
else
{
// no row was modified / the ID does not exist.
}
}
编辑:原始答案适用于PDO,对于mysqli,您需要使用$update->affected_rows
。