使用mysql和php从表中删除

mi7gmzs6  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(243)

我必须创建一个php文件,从mysql数据库中删除一些行。
对于第一个版本,我有三个表:category\u description、product\u to\u category和product\u description。
如果产品属于笔记本或手机等特定类别,我必须从产品描述表中删除这些产品。
问题是这个表只有product\u id和product\u name列。
产品到类别表包含产品标识和类别标识。
category\u description表有category\u id和category\u name列。
问题是我需要编写一个php代码,该函数将如下所示。
在category\u name列的category\u description表中检查给定的类别名称(例如:smartphone)。如果找到它,则使用category\u id列中的值编号(如234),并将其与可以在product\u to\u category表中找到的category\u id进行比较。如果找到它,则使用product\u id列中的数据归属if,并在product\u description表的product\u id列中选中此项。如果匹配,则删除给定行。
为此,我必须编写一个php/sql代码。我不知道这种形式能不能做到。
到目前为止,我所做的是数据库连接和对给定类别名称的类别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";

}
o4hqfura

o4hqfura1#

你可以用 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'
cu6pst1q

cu6pst1q2#

这个代码可以帮助我想

<?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);
         }
    }

相关问题