<?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。刪除按鈕正在刪除Mysql中的最後一個插入的行
如果我按刪除,它總是刪除mysql中最後插入的行或最新的行。
如果我回顯隱藏按鈕的內容,這是正確的,但如果我按刪除按鈕,它會刪除錯誤的行,爲什麼?
對不起任何缺少HTML標記,我只是複製你需要看你的'while'循環內 – Lynob
地方您的表單標籤,你真的應該引用您輸入的一部分。這已被認爲有不利影響。也看看你的HTML源代碼。你也可以在這裏打開SQL注入。 –
您的$ _POST [hidden]不會在您的$ $ DeleteQuery中正確評估。您應該將其更改爲'$ DeleteQuery =「DELETE FROM dayoff WHERE id ='」。 (int)$ _POST ['hidden']。 「'」;'。這也是確保int中的id以防止SQL注入的一種方法。 –