我必须创建一个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_name列中的category_description表中检查给定的类别名称(例如:智能手机)。如果找到它,则使用category_id列中的值数字(如234),并将其与product_to_category表中可以找到的category_id进行比较。如果找到它,则使用data_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";
}
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
您可以DELETE
使用JOIN
,如下所示:
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'