[英]Cannot delete row in database using PHP
我似乎無法通過php
的id
刪除database
的行,我認為id
未傳遞給$_POST['delete']
但是,顯示了"Your data is deleted"
彈出窗口,但未刪除數據。 所以我不確定這段代碼中的錯誤在哪里。
我也嘗試按其id
刪除data
,例如: Delete book where no='4';
而且代碼似乎運行正常,因為數據已在database
刪除。
<html> <script> function confirmDelete() { return confirm('Are you sure?'); } </script> <!DOCTYPE html> <head> <form action="test.php" method="POST"> <br><br><br> <table bordercolor="#FFCC66" align="center" bgcolor="#FFFFFF"> <tr> <th>No</th> <th>Title</th> <th>Author</th> <th>Year</th> <th>Donor's Name</th> <th>Call Number</th> <th>Date Received</th> <th>Handled By</th> <th></th> <th></th> </tr> <?php include ('config.php'); $view=mysqli_query($conn,"SELECT * FROM book"); ?> <?php while($v=mysqli_fetch_array($view)){ ?> <tr> <td> <?php echo $v["no"];?> </td> <td> <?php echo $v["title"];?> </td> <td> <?php echo $v["author"];?> </td> <td> <?php echo $v["year"];?> </td> <td> <?php echo $v["donorname"];?> </td> <td> <?php echo $v["callnum"];?> </td> <td> <?php echo $v["datereceived"];?> </td> <td> <?php echo $v["handledby"];?> </td> <td><input type="submit" name="delete" value="Delete" onclick="return confirmDelete('Are you sure?');" /></td> </tr> <?php } ?> </tr> </table> <br><br> </form> </body> </html> <?php if(isset($_POST['delete'])) { include('config.php'); $no =$v["no"]; $d=mysqli_query($conn,"DELETE FROM `book` WHERE no='$no'"); if ($d) { echo "<script type='text/javascript'> alert('Your data is deleted!'); </script>"; echo"<meta http-equiv='Refresh' content='0' >"; } else { echo "<script type='text/javascript'> alert('Your data cannot delete!'); </script>"; } mysqli_close($conn); } ?>
邏輯不正確,當您按下刪除按鈕時,所有數據將與提交一起傳遞,因為您的標簽不在循環之內。
依我之見,您應該在此處使用類似ajax的功能,或者遵循此方法。
<?php while($v=mysqli_fetch_array($view)){ ?>
<form action="test.php" method="POST">
<tr>
<td>
<?php echo $v["no"];?>
<input type="hidden" value="<?php echo $v["no"];?>" name="no" >
</td>
<td><input type="submit" name="delete" value="Delete" onclick="return confirmDelete('Are you sure?');" /></td>
</tr>
</form>
<?php } ?>
在您的帖子通話中使用$no = $_POST['no'];
而不是$no =$v["no"];
將submit
元素更改為
<td>
<input type="submit" name="delete" value="<?php echo $v['no'];?>" onclick="return confirmDelete('Are you sure?');" />
</td>
和
$no = $_POST["delete"];
另一個解決方案是用您的值添加隱藏的輸入。
<td>
<?php echo $v["no"];?>
<input type="hidden" value="<?php echo $v["no"];?>" />
</td>
在您的php中,您將在$_POST['no']
找到該值
此解決方案最好在POST中傳遞多個參數,例如驗證碼或確認(復選框)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.