首页 > 解决方案 > 它在 update.php 文件中显示其 ID,查询成功运行但未更新产品图像、名称和描述?

问题描述

产品没有更新,而查询在 php 中成功运行

在我的 datatable.php 文件中

<td style="padding:50px;"><a href="update.php?call=<?php echo

$fetch1['pro_id'];?>" class="btn btn-light">update</a></td>

在我的 update.php 文件中

<?php
include "config.php";

session_start();

if (isset($_POST['reg_user'])) {

    $user_id = $_GET['call'];

    $proname = mysqli_real_escape_string($connection, $_POST['proname']);
    $des = mysqli_real_escape_string($connection, $_POST['des']);

    $folder = "upload2/";

    $name = $_FILES['image1']['name'];

    $imageFileType = strtolower(pathinfo($name, PATHINFO_EXTENSION));

    $path1 = $folder . $name;

    if ($_FILES["image1"]["size"] >= 2097152) {
        echo "<br>Sorry, your file must be less or equal than 2mb ";
    }

    if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") {

        echo "<br>Sorry, only JPG, JPEG, PNG,,GIF files are allowed.";

    } else {

        move_uploaded_file($_FILES['image1']['tmp_name'], $path1);

        $query = "update products set proname='$proname',des='$des',img='$path1' where pro_id='$user_id'";

        $run = mysqli_query($connection, $query);

        header('location:datatable.php');
    }
}

?>

如果我输入“$user_id=$_GET['call'];” 在 isset 之前显示未定义索引,如果我将它放在 isset 之后,则查询运行但不显示更新

标签: phphtmlcsstwitter-bootstrap

解决方案


查询成功运行

不,它没有。(并且做出这样的假设可能是导致您困惑的原因。)您的 PHP 代码都没有运行,因为它都在这种if情况下:

if (isset($_POST['reg_user'])) {

当您通过单击此(或任何)链接到达该页面时,该条件始终为假:

<a href="update.php?call=123" class="btn btn-light">update</a>

鉴于您还在寻找其他值$_POST$_FILES数组值,因此单击链接根本不起作用。您正在寻找的是一种形式。像这样的东西:

<form action="update.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="call" value="<?php echo $fetch1['pro_id']; ?>" />
    <input type="file" name="image1" />
    <input type="submit" name="reg_user" value="Submit" />
</form>

选择一个文件并单击提交按钮将提交表单并包含您的服务器端代码正在寻找的值。另请注意,您需要更改$_GET['call']$_POST['call']在提交表单时从 POST 数组中获取“调用”值。


推荐阅读