使用php删除特定的表行

时间:2017-11-26 10:56:45

标签: php mysql sql mysqli

我写了一些代码来回应我的表:

<?php while($product = mysqli_fetch_assoc($result)) : ?>
    <tr>
        <td><?php echo $product['id']; ?></td>
        <td><?php echo $product['customer_id']; ?></td>
        <td><?php echo $product['total_price']; ?></td>
        <td><?php echo $product['created']; ?></td>
        <td><?php echo $product['modified']; ?></td>
        <td><a href="delete.php"><span class="glyphicon glyphicon-remove"></span></a></td>
    </tr>
<?php endwhile?>

为特定的表行删除创建了最后一个td元素。但是我不知道如何获得该行ID。这是我的delete.php文件:

<?php
require_once 'core/init.php';

$id = $_GET['id'];

mysqli_query($db,"DELETE FROM orders WHERE id='".$id."'");
mysqli_close($db);
header("Location: details-modal-orders.php");
?> 

我认为我应该改变这一行:

<td><a href="delete.php"><span class="glyphicon glyphicon-remove"></span></a></td>

在delete.php之后应该有一些id识别器或其他东西。请帮忙。我也不知道如何创建它,因为它在while循环中。我担心某些事情不会有效。

2 个答案:

答案 0 :(得分:2)

通过href属性

将id作为参数传递
href="delete.php?id=<?php echo $product['id']; ?>">

在执行此操作时也不要忘记使用预准备语句,因为将$_GET$_POST$_REQUEST参数直接传递到查询中是完全不安全的

使用准备好的陈述

$id =  (int) $_GET['id']; //cast to integer

$stmt = mysqli_stmt_prepare($db,"DELETE FROM orders WHERE id=?"); //prepare the statement returns true/fasle
mysqli_stmt_bind_param($stmt, "i", $id); //bind placeholder to variable
mysqli_stmt_execute($stmt); //execute (returns true/false)

答案 1 :(得分:-1)

严重吗?

<td><a href="delete.php?id=<?php echo $product['id']; ?>">
      <span class="glyphicon glyphicon-remove"></span>
</a></td>