PHP MySQL更新表未定义索引

问题描述

我正在尝试使用表单更新表。我使用POST从另一个页面获取表的ID,该方法有效,并且数据库中记录的值也在输入中。 但是,当我想更新该行时,出现以下错误注意:未定义索引:第8行的ID

我的代码在这里

 $id = $_POST['id'];
$res = $MysqLi->query("SELECT * FROM Personen WHERE ID = '$id'");?>
 <? while($row = $res->fetch_assoc()){

            ?>
            <form action="update.PHP" method="POST">
                <div class="row top-buffer">
                    <input type="text" class="form-control" name="name" id="name"  required="required" value="<? echo $row['Name'];?>">
                </div>

                <div class="row top-buffer">
                    <input type="text" class="form-control" name="vorname" id="vorname" required="required" value="<? echo $row['Vorname'];?>">
                </div>
                <div class="row top-buffer">
                    <input type="text" class="form-control" name="telefon" id="telefon"  required="required" value="<? echo $row['Telefon'];?>">
                </div>
                <div class="row top-buffer">
                    <input type="text" class="form-control" name="email" id="email"  required="required" value="<? echo $row['Email'];?>">
                    <br>
                </div>

<?}?>
 <button type="submit" name="update" class="btn btn-primary" style="margin-left: 40%;">Update</button></form>

这是我的Update语句:

if(isset($_POST['update'])){
$name = $_POST['name'];
$vorname = $_POST['vorname'];
$email = $_POST['email'];
$telefon = $_POST['telefon'];

$update = $MysqLi->query("UPDATE Personen SET Name = '$name',Vorname = '$vorname',Telefon = '$telefon',Email ='$email' WHERE ID = '$id'");
header("location: update.PHP");
}

解决方法

如果获得Notice: Undefined index: id,则意味着您引用$id而不显式设置该值。 PHP确实允许您这样做,但是在这种情况下,您需要通过放置以下代码来抑制错误消息的Notice类型:

error_reporting(E_ALL^E_NOTICE);

脚本上方的某处。但是,优良作法是始终在使用变量之前明确定义它。在您的示例中,尚不清楚$id如何获得其价值。