首页 文章

使用mysql和php从表中删除

提问于
浏览
0

我必须创建一个php文件,它将从mysql数据库中删除一些行 .

对于第一个版本,我有三个表:category_description,product_to_category和product_description .

如果产品属于笔记本电脑或手机等特定类别,我必须从product_description表中删除这些产品 .

问题是该表只有product_id和product_name列 .

product_to_category表包含product_id和category_id .

category_description表具有category_id和category_name列 .

问题是我需要编写一个php代码,该函数将如下 .

检查category_description表中category_name列中的给定类别名称(例如:smartphone) . 如果找到它,则使用category_id列中的值数字(如234),并将其与product_to_category表中可以找到的category_id进行比较 . 如果找到它,则从product_id列使用属于if的数据,并在product_description表的product_id列中进行检查 . 如果匹配则删除给定的行 .

为此,我必须编写一个php / sql代码 . 我不知道这可以用这种形式完成 .

到目前为止我所做的是数据库连接和给定类别名称的category_id的定位,如下所示:

$sql = "SELECT category_id FROM category_description WHERE name = 'smartphone'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["category_id"]. "<br>";
        $data[]=array('ID' =>$row["category_id"]);
        print_r ($data);
    }

} else {
    echo "Not found";

}

2 回答

  • 0

    您可以将 DELETEJOIN 一起使用,如下所示:

    DELETE product_description
    FROM
    category_description cd
    JOIN product_to_category pc ON cd.category_id = pc.category_id
    JOIN product_description as pd ON pd.product_id = pc.product_id
    WHERE cd.category_name = 'smartphone'
    
  • 0

    这段代码可以帮助我思考

    <?php
        $sql = "SELECT category_id FROM category_description WHERE name = 'smartphone'";
        if(!empty($cat = $conn->query($sql)->fetch_array()))
        {
             $sql = 'SELECT * FROM product_category WHERE category_id = "'. $cat['category_id']. '"';
             $cat_products = $conn->query($sql)->fetch_all(PDO::FETCH_ASSOC);
             foreach($cat_products as $product)
             {
                 $sql = 'DELETE FROM product_description WHERE product_id = "'.$product['product_id'].'"';
                 $conn->query($sql);
             }
        }
    

相关问题