Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查ID是否不存在';你不存在吗。。?_Php_Mysqli - Fatal编程技术网

Php 如何检查ID是否不存在';你不存在吗。。?

Php 如何检查ID是否不存在';你不存在吗。。?,php,mysqli,Php,Mysqli,我正在为班级制作一个游戏,我决定添加一个能够报告评论的评论系统。我创建了一个名为comments的表和一个名为report\u active的列。当用户报告注释时,该列中的值更改为1。然后,所有在活动报告列中带有1的注释都列在adminCP中 有一个名为comments.php的文件,它列出了所有注释,并允许用户添加新注释。在每条评论旁边,我添加了一个报告按钮,该按钮链接到一个名为report\u comment.php的文件。我使用这个文件来运行更新查询 该文件如下所示: <?php s

我正在为班级制作一个游戏,我决定添加一个能够报告评论的评论系统。我创建了一个名为
comments
的表和一个名为
report\u active
的列。当用户报告注释时,该列中的值更改为1。然后,所有在
活动报告
列中带有1的注释都列在adminCP中

有一个名为
comments.php
的文件,它列出了所有注释,并允许用户添加新注释。在每条评论旁边,我添加了一个报告按钮,该按钮链接到一个名为
report\u 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');
}
 ?>

会话变量
$\u session['reported']
是我用来确定是否向用户显示一个表示已报告评论的警报,然后我取消设置会话

我想问的是,我如何检查作为
$\u GET
请求发送的ID是否确实存在,然后它是否运行常规的
$\u会话['reported']
,如果没有,则设置一个新会话
$\u会话['errorReport']
,然后显示并发出错误警报

我试过:

如果($update->execute()&&$update->num_rows){
但是这不起作用


是否有其他方法可以执行此操作?

您可以像现在一样执行查询,并使用以下命令检查是否修改了任何行:


编辑:原始答案适用于PDO,对于mysqli,您可能需要使用它。

我很抱歉没有在advanced中回答您的问题,但您确实应该重新考虑数据库的体系结构。使用标志来表示关系是一种不好的做法。您应该使用连接来连接两个表,并检查是否有r匹配以指示报表是否处于活动状态的ows。请查找联接、外键和SQL关系。我刚刚访问过:。我同意这是一种更好的方法。我这样做的原因是因为这是一个很小的任务,而且我不觉得需要创建多个表,因为它不会被大量使用。我不过,作为一个更大的公共应用程序的选项,我将对此进行描述。似乎OP正在使用
mysqli.*
--
bind.\u param
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.
  }
}