使用PHP while循环创建的按钮不会更新MySQL数据库

使用PHP while循环创建的按钮不会更新MySQL数据库,php,mysql,Php,Mysql,我正在使用PHP和MySQL创建一个多用户共享待办事项列表应用程序。目前,我的应用程序通过使用while循环在数据库表上迭代来显示待办事项列表项 所有这些都正常工作,因此我知道我正在连接数据库。while循环的一部分还生成按钮,允许用户“声明”没有人处理的项目,或指示at项目已完成。但是,这些按钮不会更新数据库表 <?php include 'includes/dbh.inc.php'; $sql = 'SELECT * FROM items WHERE item_is

我正在使用PHP和MySQL创建一个多用户共享待办事项列表应用程序。目前,我的应用程序通过使用while循环在数据库表上迭代来显示待办事项列表项

所有这些都正常工作,因此我知道我正在连接数据库。while循环的一部分还生成按钮,允许用户“声明”没有人处理的项目,或指示at项目已完成。但是,这些按钮不会更新数据库表

<?php

    include 'includes/dbh.inc.php';

    $sql = 'SELECT * FROM items WHERE item_is_done = 0';
    $result = mysqli_query($conn, $sql);

    while($row = mysqli_fetch_assoc($result)) {

    $creator = $row['item_creator'];
    $owner = $row['item_owner'];
    $id = $row['item_id'];

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

       $update = "UPDATE items SET item_owner = $currentID WHERE item_id = $id;";
       mysqli_query($conn, $update);

       header("Location: ../todo.php?code=doing");
       exit();

    } else if(isset($_POST['complete_item'])) {

        $update = "UPDATE items SET item_is_done = 1 WHERE item_id = $id;";
        mysqli_query($conn, $update);

        header("Location: ../todo.php?code=done");
        exit();
    }

    echo '<h4>Item ID:</h4>' . $id . '<br><br>';
    echo '<h4>Item created by:</h4>' . $creator . '<br><br>';
    echo '<h4>Date Added: </h4>' . $row['item_add_date'] . '<br><br>';
    echo '<h4>Item Title: </h4>' . $row['item_title'] . '<br><br>';
    echo '<h4>Description: </h4>' . $row['item_description'] . '<br>';

    if($row['item_owner'] == 'None') {

        echo '<br>';
        echo '<button type="submit" name="do_item" formaction="todo.php" formmethod="POST">Do Item</button>';
        echo '<br>';

    } else if($row['item_owner'] != 'None') {

        echo '<br>';
        echo '<h4>Item is being worked on by: </h4>' . $owner . '<br><br>';
        echo '<button type="submit" name="complete_item" formaction="todo.php" formmethod="POST">Complete Item</button>';
        echo '<br>';
    }

    echo '<hr>';
}
?>


我也遇到了同样的问题,我所做的是尝试将更新变量放在“”单引号中

如果它可以帮助您,您可以尝试此查询

$update = "UPDATE items SET item_owner='$currentID' WHERE item_id='$id'";

$update = "UPDATE items SET item_is_done='1' WHERE item_id ='$id'";

您没有将
$currentID
设置为任何值。您的代码易受攻击。在编写SQL查询时使用。@AlexHowansky对不起,我应该描述一下我的数据库是如何设置的。item_creator是创建列表项的人,item_owner是处理列表项的人$currentID正在工作,因为它正在while循环中填充部分待办事项列表项(如屏幕截图所示)。@tyteen4a03谢谢,我将对此进行研究。您知道,只要您单击一个
header()
命令,您就不再处于此过程中,对吗?因此,之后(在循环中或循环外)不会执行任何操作。感谢您的回复。早些时候我自己尝试过这个方法,它确实奏效了,但这确实是我一直在寻找的解决方案。现在我有一个新问题。。。当我点击按钮时,它会更新页面上的所有条目,而不仅仅是我点击按钮的条目。但我会问另外一个问题。