如何检查ID是否存在..?

时间:2014-04-16 22:21:11

标签: php mysqli

我正在上课,我决定添加一个能够报告评论的评论系统。我创建了一个名为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']然而,这并没有奏效。

我还有另一种方式吗?

1 个答案:

答案 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