代码之家  ›  专栏  ›  技术社区  ›  Valdas S

使用php删除表的特定行

  •  1
  • Valdas S  · 技术社区  · 8 年前

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

    <?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。这是我的删除。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>
    

    删除后。php应该有某种身份识别器之类的东西。请帮忙。我也不知道如何创建它,因为它在while循环中。恐怕有些事情不太好。

    2 回复  |  直到 8 年前
        1
  •  2
  •   Rotimi    8 年前

    将id作为参数通过 href 属性

    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)
    
        2
  •  -1
  •   Vincent Decaux    8 年前

    严重吗?

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