如何使用来自 html 表单的输入根据显示的结果更新 sql table 中的字段,这些结果本身就是 sql 查询的输出?

How to update a field in sql table with inputs from an html form against displayed results which are themselves output of an sql query?

我有一个如下所示的数据库。

Id Class  Name                Email                           Comments  
  1   4    Thomas Sheffield  tom@email.com  
  2   5    Natasha Rosewhite natasha@email.com  
  3   4    Jerome Manyville  jerry@email.com  
  4   6    Susan Carrey      suzzy@email.com 
  5   4    Selina Waterwall  selina@email.com 

我有一个 php 页面,可以查询特定 class 的名称并将其显示为 html table。 html 页面还有一个针对每个显示名称的输入字段,可以在其中输入评论。点击提交按钮后,数据库中应更新针对每个特定名称的评论。 我应用了以下逻辑 - 唯一的 Id 将被转移到另一个 php 页面(由提交按钮的操作字段指示),然后使用 $_POST 更新评论。

我用过下面的代码

 <?php
session_start();
$username = "Debo";
$password = "123456";
$hostname = "localhost"; 
$Idtemp = array();
$i=0;
$sql = "SELECT `Id`, `Name`, `Email` FROM `registration` WHERE `Class`=4";

$dbconnect=mysqli_connect($hostname, $username, $password, "test1")
 or die("unable to connect"); 

$result = mysqli_query($dbconnect, $sql);

ECHO "<table border=\"2\">
  <tr bgcolor=\"#cccccc\">
  <td width=\"100\">Id</td>
  <td width=\"200\">Name</td>
  <td width=\"100\">Email</td>
    <td align=\"center\" width=\"100\">COMMENTS</td>
</tr>";

while($row = mysqli_fetch_array($result))
{   ECHO "<tr><td width=\"100\">".$row['Id']."</td>";
    ECHO "<td width=\"200\">".$row['Name']."</td>";
    ECHO "<td width=\"100\">".$row['Email']."</td>";
    ECHO "<td align=\"center\"><input type=\"text\" name=\"comments[]\" size=\"50\"</td></tr>";
    $IDtemp[$i]=$row['Id'];
    $i++;};


ECHO"
<table>
<form action=\"processregistration.php\" method=\"post\">
<tr>
  <td colspan=\"8\" align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Submit Feedback\"></td>
</tr>
</table>";

$_SESSION['CURRENTID']=$IDtemp;

?>

然后在提交时,它转到

<?php

session_start();

$COMMENTS = array();
$ID = $_SESSION['CURRENTID'];
var_dump($ID);
if (isset($_POST['submit']))
{
$COMMENTS=$_POST['comments'];
};
$username = "Debo";
 $password = "123456";
 $hostname = "localhost"; 

foreach($ID as $key=>$n)
{
    $sql = "UPDATE  `test1`.`registration` SET `Comments` = $COMMENTS[$key] WHERE `registration`.`UID` = $n";
    var_dump($sql);

     $dbconnect=mysqli_connect($hostname, $username, $password, "test1")
    or die("unable to connect");
    mysqli_query($dbconnect, $sql);
if (mysqli_error($dbconnect))
{
    ECHO "Error Description:".mysqli_error($dbconnect);};

};

?>

我发现 'comments' 没有发布。 我在第 10 行收到通知 'undefined index: comments'。

我做错了什么? 我对 php 很陌生。请帮忙。另外,我尝试实现我想要达到的目标的方法是正确的还是有更好的方法?

问候。

您的 comments[] 输入似乎不在您的 <form> 中。将开始表单标签移动到 HTML 的开头应该修复未定义的索引通知:

ECHO "<form action=\"processregistration.php\" method=\"post\">
<table border=\"2\">
...