Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果用户在处理订单之前编辑了购物车,则更新记录或删除并重新插入_Php_Mysql_Cart - Fatal编程技术网

Php 如果用户在处理订单之前编辑了购物车,则更新记录或删除并重新插入

Php 如果用户在处理订单之前编辑了购物车,则更新记录或删除并重新插入,php,mysql,cart,Php,Mysql,Cart,我有一个名为orders\u products的表,其中包含与每个订单关联的所有产品。现在,如果客户决定编辑数量、属性或只是删除产品,那么在数据库中处理此更改的最简单方法是什么 订购产品 id | quantity | fk_products_id | attributes | price | fk_orders_nr fk\u products\u id指我们产品表中的实际产品id attributes是一个逗号分隔的字符串,id引用我们的属性表(属性可以是每个产品的角度

我有一个名为
orders\u products
的表,其中包含与每个订单关联的所有产品。现在,如果客户决定编辑数量、属性或只是删除产品,那么在数据库中处理此更改的最简单方法是什么

订购产品

id  |  quantity  |  fk_products_id  |  attributes  |  price  |  fk_orders_nr
fk\u products\u id
指我们产品表中的实际产品id
attributes
是一个逗号分隔的字符串,id引用我们的属性表(属性可以是每个产品的角度、长度、直径等。如45度,左天使,长度20厘米,直径43毫米)。
fk_orders\u nr
是产品所属的实际订单

因为我有一个
,它在客户端处理这个部分。根据订单id(
fk_orders\u nr
)删除所有相关产品,然后根据类中存储的内容重新插入和更新整个产品集是否更容易 或者有没有一种简洁的方法可以直接在MySQL中处理这个问题

我已经仔细研究了关于重复密钥更新的
忽略
,但它们似乎不符合我的需要

我需要检查实际的产品id是否存在,然后决定插入新的或更新现有的(可能是数量和/或可选属性),如果产品不再在
类的列表中,则可能会将其删除


写这个问题的时候。我认为删除整个集合并重新插入可能是最简单的方法。

这个数据库看起来设计得很糟糕。首先,我假设通过
fk\u products\u id
你的意思是
product\u id
。您不需要在列的名称中指定列是外键

其次,我建议您保持所有列的原子性,如中所示,没有多个值。保持逗号分隔列表的
attributes
列将来会让你头疼,而且还会破坏最基本的列表

第三,您不需要(尽管有时可能有用)一个
id
作为连接表中的主键。您只需使用
fk_products\u id
fk_orders\u nr
键中的复合主键即可

写这个问题的时候。我想删除整套,然后 重新插入,可能是最简单的方法

是的,这是通常的做法


但是我坚持认为,你忽略了当前问题的所有方面,从头开始重新设计你的数据库,特别关注数据库。这些是基本的数据库设计标准,它们的存在是有原因的。希望你不会太晚才知道原因。

你能通过给出一些DB结构来澄清吗?你能把你的问题简化一点吗?我已经更新了我的问题@Naruto。你所说的“更简单”的人是什么意思?属性是什么?所以订单和产品实际上是介于两者之间的表格?像产品-订单行-订单?我知道设计不好的部分。但目前不可能重新分配。该公司希望重新设计付款/订单流程,而不是重新设计数据库结构。。。所以我现在必须处理这个问题。但是无论如何,谢谢你的建议。@ThomasK啊,我明白了。那么,您只是问是否应该删除整个集合并重新插入它?如果是的话,那么是的。这就是我想知道的。我也不太喜欢逗号分隔的字符串。它限制了很多可能性,并使编码变得不必要的麻烦。。。但事实就是这样,我在编写代码时必须适应它。@ThomasK我知道你的意思,我曾经去过那里。祝你好运