为了账号安全,请及时绑定邮箱和手机立即绑定

PHP / MySQL:用户更新数据后未定义的索引

PHP / MySQL:用户更新数据后未定义的索引

PHP
翻翻过去那场雪 2022-09-25 20:32:04
目前,我正在开发一个需要更新功能的系统。系统的流程将如下所示:1) 仪表板中的数据行列表.php2)用户可以选择其中一个数据来查看详细信息。它将重定向到view_task.php3)在view_task.php,用户可以更新任务名称,然后单击“保存”按钮进行保存。问题是。单击按钮保存后,它将显示错误“未定义的索引:第7行的报告ID”和“未定义的变量:第55行的task_name”以下是我当前的代码:view_task.php<?php  require_once "../../../../config/configPDO.php";  require_once "../../../../config/check.php";  $report_id = $_GET['report_id']; //line 7  $sql = "SELECT * FROM ot_report WHERE report_id = :report_id";  $query = $conn->prepare($sql);  $query->execute(array(':report_id' => $report_id));  while($row = $query->fetch(PDO::FETCH_ASSOC)){      $report_id = $row["report_id"];      $task_name = $row["task_name"];  }?><form action="update_task_name.php" method="POST">  <td><b>Task Name</b></td>  <td colspan = '2'><input type="text" class="form-control" name="task_name" value="<?php echo $task_name; ?>"/></td> //line 55  <input type="hidden" name="report_id" value="<?php echo $report_id ?>">   <td><input type="submit" class="btn btn-primary btn-block" value = "Save" onclick="confirm('Are you sure?')"></td></form>update_task_name.php<?php    require_once '../../../../config/configPDO.php';    $update = "UPDATE ot_report SET task_name = :task_name WHERE report_id = :report_id";    $stmt = $conn->prepare($update);    $stmt->bindParam(':task_name', $_POST['task_name']);    $stmt->bindParam(':report_id', $_POST['report_id']);    $stmt->execute();    class Result {}    $response = new Result();    $response->result = 'OK';    $response->message = 'Update successful';    header("Location: view_task.php");?>虽然在view_task.php时得到错误,但数据保存成功!任何人都可以知道错误是什么?
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

你提到:

虽然在view_task.php时得到错误,但数据保存成功!

基于此,我可以假设您从仪表板输入了view_task.php.php没有任何错误

错误仅在您单击“保存”按钮后发生。

所以,并且必须成功发送到update_task_name.phptask_namereport_id

但是,当您尝试重定向回task_view.php时:

header("Location: view_task.php");

您没有view_task.php,并导致了您在问题中提到的错误report_id

所以,这是我的答案,在你的update_task_name.php

替换以下内容:

header("Location: view_task.php");

与此:

header("view_task.php?report_id=".$_POST['report_id'])


查看完整回答
反对 回复 2022-09-25
?
暮色呼如

TA贡献1853条经验 获得超9个赞

这一切都过于复杂,因为它非常简单:


/* initialize variables before already */

$report_id = -1;

$task_name = '';


/* check if the $_GET has a numerical report_id */

if(isset($_GET['report_id']) && is_numeric($_GET['report_id'])) {


    /* then dare to access $_GET['report_id'] */

    $report_id = $_GET['report_id']; //line 7


    $sql = "SELECT * FROM ot_report WHERE report_id = :report_id";

    $query = $conn->prepare($sql);

    $query->execute(array(':report_id' => $report_id));

    while($row = $query->fetch(PDO::FETCH_ASSOC)){

        $task_name = $row["task_name"];

    }

}


...


查看完整回答
反对 回复 2022-09-25
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

你的错误是这个...

只需使用有效的report_id访问您的页面

localhost/project_name/view_task/1

您可能没有在 URL 中证明 id,因此view_task查询本身不起作用,因为它没有从 GET 方法的 URL 获取 id。


查看完整回答
反对 回复 2022-09-25
  • 3 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号