繁体   English   中英

无法使用PHP删除数据库中的行

[英]Cannot delete row in database using PHP

我似乎无法通过phpid删除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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM