[英]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.