簡體   English   中英

刪除按鈕正在刪除MySQL中最后插入的行

[英]delete button is deleting the last inserted row in Mysql

<?php
if(isset($_POST['delete_dayOff'])) {
 $DeleteQuery = "DELETE FROM dayoff WHERE id = '$_POST[hidden]'";
 mysqli_query($db,$DeleteQuery);
 };

// display records

$select_employee = "SELECT * FROM dayoff";
$result = $db->query($select_employee);
 ?>
<table>
<div id="Day-off Employees">
<?php
     echo "<table><caption>Day-off Employees</caption><tr>
    <th>Employee First Name</th>
    <th>Employee Last Name</th>
    <th>Day-Off</th>

    </tr>";

    echo "<form action=dayoff.php method=post>";

     // output data of each row
     while($row = $result->fetch_assoc()) {

         echo "<tr>";

         echo "<td>" . $row["employeefname"]. "</td>";
         echo "<td>" . $row["employeelname"]. "</td>";
         echo "<td>" . $row["date"]. "</td>";


echo "<td>" . "<input type=hidden name=hidden  value=" . $row["id"].  " </td>";
echo "<td>" . "<input  type=submit   name=delete_dayOff value=delete  >" . " </td>";
echo "</tr>";
}

echo "</form";


echo "</table>";


?>

我在另一頁上使用了完全相同的腳本,並且運行良好。 id是自動編號主鍵int,在mysql中不為null。

如果我按Delete鍵,它將始終刪除mysql中最后插入的行或最新行。

如果我回顯隱藏按鈕的內容,那是正確的,但是如果我按刪除按鈕,它將刪除錯誤的行,為什么?

這是因為盡管您希望能夠刪除單個行,但您只有一個表單。 您應該擁有與行一樣多的表格。

與其將表單標簽放在while循環之外,不如將其放在里面,這樣,您將擁有許多表單。

僅具有一種形式的麻煩在於,您用相同的名稱命名了隱藏字段,因此它將采用最后一個。

while($row = $result->fetch_assoc()) {
    echo "<tr>";
     ...
    echo '<td><form ...><input hidden...><input type="submit"...></form></td>';
    ...
}

$_POST[hidden]應該是$_POST['hidden'] ;

 $DeleteQuery = "DELETE FROM dayoff WHERE id = '$_POST['hidden']'";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM