我的PHP代码未更新数据库中的值

时间:2018-08-17 08:50:49

标签: php mysql sql apache sql-update

我试图使用管理面板来编写代码来更新数据库中的类别,但是每当我尝试这样做时,它将无法正常工作,而且我也没有遇到任何错误,请帮忙;非常感谢

PHP代码:

<?php

               if (isset($_GET['edit'])) {
                   $edit_id = $_GET['edit'];
                $query = "SELECT * FROM categories WHERE category_id = $edit_id ";
                $edit_get_result = mysqli_query($connection,$query);
                if (!$edit_get_result) {
                    die("Edit Get Result Query FAILED");
                }
                while ($category_name_row=mysqli_fetch_assoc($edit_get_result)) {
                    $category_name = $category_name_row['category_name'];
                }
                ?>
                <center>
                 <form action="category.php" method="POST">

                 <div class="form-group">
                    <label for="update_category">Update Category</label>
                    <input type="text" class="form-control" id="update_category" value="<?php if(isset($category_name)){echo $category_name; } ?>" name="update_category" aria-describedby="emailHelp" placeholder="Enter Category Name">
                  </div>
                  <button type="submit" name="update_category_submit" class="btn btn-primary">Update</button>

                </form>
            </center>

                <?php

                if (isset($_POST['update_category_submit'])) {
                    $category_name = $_POST['update_category'];
                    $query = "UPDATE categories SET category_name = '$category_name' WHERE category_id = $edit_id ";
                    $final_update_query_result = mysqli_query($connection,$query);
                    if (!$final_update_query_result) {
                        die("Final Update Query Result FAILED");
                    }
                }
            }


                ?>

2 个答案:

答案 0 :(得分:0)

请检查以下代码。您需要在POST表单中传递edit_id。我将其放在隐藏的输入中,并根据php部分顶部的GET参数设置其值。

<?php
if (isset($_GET['edit'])) {
    $edit_id = mysqli_real_escape_string($connection,$_GET['edit']);
    $query = "SELECT * FROM categories WHERE category_id = '$edit_id' ";
    $result = mysqli_query($connection,$query);
    if(!$result) {
    die("Edit Get Result Query FAILED");
    }

    while ($row=mysqli_fetch_assoc($result)) {
    $category_name = $row['category_name'];
    }
?>
<center>
<form action="category.php" method="POST">

<div class="form-group">
<label for="update_category">Update Category</label>
<input type="text" class="form-control" id="update_category" value="<?php if(isset($category_name)){echo $category_name; } ?>" name="update_category" aria-describedby="emailHelp" placeholder="Enter Category Name">
</div>
<input type="hidden" name="edit_id" value="<?php if(isset($edit_id)) echo $edit_id;?>">
<button type="submit" name="update_category_submit" class="btn btn-primary">Update</button>

</form>
</center>

<?php

if (isset($_POST['update_category_submit']) && isset($_POST['edit_id'])) {
    $category_name = mysqli_real_escape_string($connection,$_POST['update_category']);
    $edit_id = mysqli_real_escape_string($connection,$_POST['edit_id']);

    $query = "UPDATE categories SET category_name = '$category_name' WHERE category_id = $edit_id ";
    $result = mysqli_query($connection,$query);
    if (!$result) {
    die("Final Update Query Result FAILED");
    }
    else echo "Final Update Query Result Success";
}


?>

答案 1 :(得分:0)

您好,您注意到您使用了原始输入。尝试避免它。还注意到您的代码在末尾有多余的花括号。

请在替换您的结束页部分php脚本后尝试使用以下代码。

if (isset($_POST['update_category_submit'])) {
    $category_name = $_POST['update_category'];
    $query = "UPDATE categories SET category_name = '$category_name' WHERE category_id = $edit_id ";
    $final_update_query_result = mysqli_query($connection,$query);
    if (!$final_update_query_result) {
        die("Final Update Query Result FAILED");
    }
}

并将您的查询变量更改为以下内容:

$query = "SELECT * FROM categories WHERE category_id = ".$edit_id;