0

正在从我的数据库表中删除一个条目。

目前删除工作正常。但是它删除了“id + 1”

我的脚本在从 mysql 表填充的条目旁边填充了一个“删除”按钮。

当我点击条目旁边的删除时,它会删除项目 +1。

我认为这与 while 循环有关,即我填充项目的方式。

有想法该怎么解决这个吗?

<?php 
  while($row = mysqli_fetch_array($result)) : ?>
<tr>
  </table border = '1'><br><table border = '1'><th>Subject</th><th>Sender</th>    <th>Message</th><th>Delete</th>
  <?php 
  echo "<tr><td>";
  echo $row['subject'];
  echo "<td>";
   echo $row['sender'];
  echo "<td>";
  echo $row['msgText'];
  echo "<td>";
  ?>
    <form action="delete.php" method="post">
      <input type="hidden" name="delete_id" value="<?php  $_SESSION['id'] = $row['id'];   ?>" />
      <input type="submit" value="Delete" />
   </form>
</tr>
<?php endwhile; ?>

这是 delete.php 中的脚本

<?php
session_start();
$id = $_SESSION['id'];
$con=mysqli_connect("localhost","root","","something");
  $sql = "DELETE FROM `mailbox` WHERE `id`= '$id'";
  $result = mysqli_query($con,$sql);
   header('Location: loggedin.php');
?>
4

3 回答 3

1
<input type="hidden" name="delete_id" value="<?php  $_SESSION['id'] = $row['id'];   ?>" />

将其更改为:

<input type="hidden" name="delete_id" value="<?php echo $row['id']; ?>" />

在您的 delete.php 中,只需替换$_SESSION['id']$_POST['delete_id']

P/S:顺便说一句,session_start();如果你真的想使用它,你忘了添加表单的 php,但这次不是一个好主意。

于 2013-03-03T05:57:04.263 回答
0

$_SESSION['id']每次在循环中都会被覆盖。

为什么不只是简单地使用$_POST["delete_id"]来检索行 ID。

于 2013-03-03T04:40:56.717 回答
0

Table Structure错了

<?php 
    while($row = mysqli_fetch_array($result)) : 
?>

<tr>
    <th>Subject</th>
    <th>Sender</th>
    <th>Message</th>
    <th>Delete</th>
</tr>
<tr>
<?php 
  echo "<td>";
  echo $row['subject'];
  echo "</td><td>";
   echo $row['sender'];
  echo "</td><td>";
  echo $row['msgText'];
  echo "</td>";
  ?>
  <td>
       <form action="delete.php" method="post">
           <input type="hidden" name="delete_id" value="<?php  $_SESSION['id'] = $row['id'];   ?>" />
           <input type="submit" value="Delete" />
       </form>
  </td>
</tr>
<?php endwhile; ?>

$_SESSION['id']删除记录时也不要使用。利用$_POST['delete_id']

于 2013-03-03T05:04:27.977 回答