从数据库中的行中删除某条记录

时间:2016-09-05 06:52:18

标签: php sql

大家好我试图从数据库中删除一条记录,例如:

 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'");

        }
    }
}

2 个答案:

答案 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 Relationshipjoin statement以实践方式设计数据库