繁体   English   中英

Php从多个表中删除

[英]Php delete from multiple tables

我有一个基本的后台设置,其中有几个表列出了数据库内容,并提供了基于 id 删除行的选项。 但是对于我拥有的每个产品,我需要有不同的 PHP 删除文件,在本例中为"product_01""product_02"等。

如何在查询字符串( href='delete_product_01.php?id=... )中传递自定义 ID,以便我可以在删除 php 文件中使用条件语句,这样我只需要一个 delete.php 文件。

谢谢

返回.php.php

echo "<td class='deleteMe'><a class='delete_back' href='delete_product_01.php?id=".$record['id']."'>x</a></td>";

delete_product_01.php

include('config_delete.php');

if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $query = mysql_query("DELETE FROM product_01_table WHERE id='$id'");
    if ($query) {
        header('location:back.php');
    }
}

您可以将产品 ID 作为第二个 get 参数传递,例如

delete_product.php?id=4&product_id=1

在您的delete.php 中,您可以以某种方式操作您的字符串,例如

"delete from product_".$_GET["product_id"]."_table where id='$id'"

但你真的应该这样做!

这里有多种原因,为什么这样的代码设计非常危险和糟糕:


SQL注入

人们可以很容易地利用您的 get 参数来执行邪恶的 sql 代码。 想象一下有人打电话

delete_product.php?id=4';DROP database;

通过这样做,他不仅会删除一个产品,还会删除所有内容。 在这里查看更多信息。

mysql_* 函数

mysql_*函数早已弃用,不应使用。 这有很多原因,看看这个SO-Post

数据库设计

为您的每个产品都指定一个表是非常糟糕的数据库设计。 想象一下您的公司(或这里销售的任何实例)对其产品组合进行更改,删除或添加产品。 您将需要进行大量更改。 如果你考虑修改你的概念(你真的应该!) 这篇文章将为你提供一个很好的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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