php - 如何在循环中的数据库中插入元素

时间:2017-03-21 16:34:45

标签: php mysql

我在编写这段代码时需要帮助。任何人都可以帮我找到错误..

if(mysqli_num_rows($result) > 0)
{
    while ($row = mysqli_fetch_array($result))
    {
        $a = $row['ID'];
        echo "<tr><td>" . $row['ID'] . "</td><td>" . $row['attended'] . "</td><td>".$row['missed']."</td><td><input type='checkbox' name='present[]' value='$a'>Present</td></tr>";
    }       

}
if(!empty($_POST['present'])) 
{
     foreach($_POST['present'] as $present) 
     {

         $query = "UPDATE dwdm SET attended = attended + 1 WHERE ID = '{$present}'";
         $run_query = mysqli_query($conn, $query);
     }
}

我要做的就是将复选框的值存储在一个数组中(存储用户勾选的复选框的相应值)。 然后在数据库中增加一个字段WHERE id =对应的注册号。用户检查。如果两个以上都增加。但当 1)我检查该框,它在第一次不起作用,第二次起作用。 2)当我切换复选框时会发生同样的事情。它会增加未检查的另一行。注意 - 这只在第一次尝试时发生。

 refer the image

image of the db

1 个答案:

答案 0 :(得分:0)

问题是您在执行更新之前查询数据库并显示表,因此您将看到以前的数据。切换订单。

if(!empty($_POST['present'])) 
{
     foreach($_POST['present'] as $present) 
     {
         $query = "UPDATE dwdm SET attended = attended + 1 WHERE ID = '{$present}'";
         $run_query = mysqli_query($conn, $query);
     }
}

$result = mysqli_query($conn, "SELECT * FROM dwdm");

if(mysqli_num_rows($result) > 0)
{
    while ($row = mysqli_fetch_array($result))
    {
        $a = $row['ID'];
        echo "<tr><td>" . $row['ID'] . "</td><td>" . $row['attended'] . "</td><td>".$row['missed']."</td><td><input type='checkbox' name='present[]' value='$a'>Present</td></tr>";
    }       
}