大家好我试图从数据库中删除一条记录,例如:
ID Flower_type Flower_name Price
1 Bouquet Beauty 150
2 Basket Sunshine 120
现在我将有另一个表来编辑flower_types:
ID Flower_type
1 Bouquet
2 Basket
3 Flower Arrangement
现在,如果我需要将“Bouquet”编辑为“Bouquets”,我想删除另一个表中ID为“1”的记录,以便flower_type立即更改。
我卡在需要删除的地方,因为我无法删除flower_type记录。
这是它尝试的但是查询不好。有一种方法来chnage它? ..或者我可以更新表格吗?
这是我试过的代码:
{
$update = mysqli_query($conn,"SELECT id FROM tbl_flower WHERE flower_type ='$_SESSION[prevname]'");
$update_rows = mysqli_num_rows($update);
for($i = 0;$i < $update_rows; $i++){
while($row = $update -> fetch_assoc()){
$i++;
echo $row['id'];
$id = $row['id'];
$DELETE = mysqli_query($conn,"DELETE flower_type FROM tbl_flower WHERE id='$id'");
}
}
}
答案 0 :(得分:1)
您的问题是您的表未规范化,您可以使用简单的更新语句而不是删除来执行此操作。您在2个不同的表中有flower_type,但它应该只有1.您在select语句中使用连接将这些表组合在一起。
我在您的样本数据中添加了名称以供参考。
FlowerArrangements
ID Flower_name Price Flower_type
1 Beauty 150 1
2 Sunshine 120 2
ArrangementType
ID Flower_type
1 Bouquet
2 Basket
3 Flower Arrangement
可以像这样加入2个表
select *
from FlowerArrangements fa
join ArrangementType at
on fa.Flower_type = at.ID
现在将Bouquet更新为Bouquets就像
一样简单update ArrangementType set Flower_type='Bouquets' where Flower_type = 'Bouquet'
返回Bouquet之前的所有FlowerArrangements将在您重新运行select查询时返回Bouquets。
答案 1 :(得分:1)
您的表格设计出错并且重复列。您的表格应按照以下示例进行设计:
Flower Table
+-----+-------------+-------+
| ID | flower_name | price |
|-----+-------------+-------|
| 1 | Beauty | 150 |
|-----+-------------+-------|
| 2 | Sunshine | 120 |
+-----+-------------+-------+
Flower Type Table
+------------+----------------+
| flower_id | flower_type_id |
|------------+----------------+
| 1 | 1 |
+------------+----------------+
Type Table
+-----+-------------------------+
| ID | flower_type |
|-----+-------------------------+
| 1 | Bouquet |
|-----+-------------------------+
| 2 | Basket |
|-----+-------------------------+
| 3 | Flower Arrangement |
+-----+-------------------------+
在您的情况下,您需要分成一个名为花型表的新表。
这样做的好处是,当您更新花型名称时,您不必担心需要在其他表中更新的任何重复列。此外,删除花型时,只需删除花型表,其中flower_type_id等于花型ID。
如果要列出所有花的类型,可以使用MySql连接这些表。
您应该了解Database Relationship和join statement以实践方式设计数据库