使用php和sql更新类别名称不起作用

使用php和sql更新类别名称不起作用,php,html,forms,input,sql-update,Php,Html,Forms,Input,Sql Update,我正在尝试更新一个类别名称,但运气不好 在functions.php上,我有一个显示所有类别的函数: function get_all_categories(){ global $connection; $query = 'SELECT * FROM categories'; $select_categories = mysqli_query($connection,$query); while ($row = mysqli_fetch_assoc($select

我正在尝试更新一个类别名称,但运气不好

在functions.php上,我有一个显示所有类别的函数:

function get_all_categories(){
    global $connection;
    $query = 'SELECT * FROM categories';
    $select_categories = mysqli_query($connection,$query);
    while ($row = mysqli_fetch_assoc($select_categories)) {
    $cat_id = $row['cat_id'];
    $cat_title = $row['cat_title'];
    echo "<tr>";
    echo "<td>$cat_id</td>";
    echo "<td>$cat_title</td>";
    ?>
    <form method="post">
        <input type="hidden" name="delete_cat_id" value="<?php echo $cat_id; ?>">
        <?php 
        echo '<td class="text-center"><input class="btn btn-danger" type="submit" value="Delete" name="delete"></td>';
         ?>
    </form>

    <form method="post">
        <input type="hidden" name="update_category_id" value="<?php echo $cat_id; ?>">
        <?php 
        echo '<td class="text-center"><input class="btn btn-info" type="submit" value="Update" name="update_category"></td>';
        ?>
    </form>
<?php 
    // echo "<td class='text-center'><a class='btn btn-info' href='categories.php?update=$cat_id'>Update</a></td>";
    echo "</tr>";
    }

}
函数获取所有类别(){
全球美元连接;
$query='SELECT*FROM categories';
$select\u categories=mysqli\u query($connection,$query);
while($row=mysqli\u fetch\u assoc($select\u categories)){
$cat_id=$row['cat_id'];
$cat_title=$row['cat_title'];
回声“;
回显“$cat_id”;
回显“$cat_title”;
?>

$\u POST['update\u category\u id']
是在您的代码中首先访问的,但是对于
update\u category\u id
没有输入

您是否错过了为表单中的
update\u category\u id
设置隐藏输入

您可以编辑代码,在周围添加隐藏的输入

<input class="form-control" type="text" name="updated_cat_name" ...
<input type="hidden" name="update_category_id"
       value=<?php echo $selected_cat_id; ?> />
好的

经过长时间的寻找,包括这里那些试图帮助我的人,我终于找到了答案

此代码中存在问题:

if (isset($_POST['update_category'])) {
include "includes/update_categories.php";
}
问题是,当我单击上面代码中创建的“更新”按钮时,它包括从SQL字段获取值的查询和更新SQL字段中的值的查询

问题是,当我在上面的代码中再次单击“更新”按钮时,帖子将改为
if(isset($\u POST['Update\u cat\u title'))

结果是
if(isset($\u POST['update\u category'])
POST-in不再可用,这导致表单的
include
被删除

因此,更新查询不再在此页面中,结果也不会发送

所以我说:

    if(isset($_POST['update_cat_title'])){
    $newCatName = $_POST['updated_cat_name'];
    $catId = $_POST['category_id'];
    update_category($newCatName, $catId);
    }
(本可以将所有函数放在同一个文件中,但决定将其移到“functions.php”文件中)

所以我创建了这个函数:

function update_category($newCatName, $catId){
global $connection;
$updated_cat_title = escape($newCatName);
$edited_category_id = escape($catId);
$update_cat_query = "UPDATE categories SET cat_title = '$updated_cat_title' WHERE cat_id = $edited_category_id ";
$update_query = mysqli_query($connection,$update_cat_query);
checkQuery($update_query);
header("Location: categories.php");
}
现在一切都很好,
谢谢大家!

请添加代码如何在表单和脚本之间传递可编辑内容,例如,通过隐藏输入您将获得类别id以编辑类别,您需要在表单中使用此值。就像您传递
$cat\u title
,您需要添加
编辑您的答案])我知道如何,我支持usershello,感谢您的帮助快速回复,字段在那里,我已经用支持代码更新了帖子。我还尝试添加一个隐藏帖子以获取
类别id的值:
@ahiadhazan:检查编辑。

    if(isset($_POST['update_cat_title'])){
    $newCatName = $_POST['updated_cat_name'];
    $catId = $_POST['category_id'];
    update_category($newCatName, $catId);
    }
function update_category($newCatName, $catId){
global $connection;
$updated_cat_title = escape($newCatName);
$edited_category_id = escape($catId);
$update_cat_query = "UPDATE categories SET cat_title = '$updated_cat_title' WHERE cat_id = $edited_category_id ";
$update_query = mysqli_query($connection,$update_cat_query);
checkQuery($update_query);
header("Location: categories.php");
}