Php 将购物车订单保存到数据库的最佳方法是什么?是否将项目保存为一行或多行中的数组?

Php 将购物车订单保存到数据库的最佳方法是什么?是否将项目保存为一行或多行中的数组?,php,mysql,Php,Mysql,只是在这里寻求建议。我有一个购物车网站。我将发布接收项目并打印出来的php。但是,我希望将这些订单存储在我的数据库中。我应该。。。我可以吗。。。将多个项目保存在一行下的一个单元格中,如下所示 {"114":{"id":"114","name":"Raskals Lemon","quantity":1,"price":15,"weight":1,"shopid":"1","shopname":"MMD","type":"Sativa","size":"---","strain":"Sativa",

只是在这里寻求建议。我有一个购物车网站。我将发布接收项目并打印出来的php。但是,我希望将这些订单存储在我的数据库中。我应该。。。我可以吗。。。将多个项目保存在一行下的一个单元格中,如下所示

{"114":{"id":"114","name":"Raskals Lemon","quantity":1,"price":15,"weight":1,"shopid":"1","shopname":"MMD","type":"Sativa","size":"---","strain":"Sativa","thc":"---","subtype":"Flower"},"117":{"id":"117","name":"Nectarine","quantity":1,"price":15,"weight":1,"shopid":"1","shopname":"MMD","type":"Sativa","size":"---","strain":"Sativa","thc":"---","subtype":"Flower "}}
或者最好将所有项目和详细信息保存为多行,并在将来的查询中使用类似“订单号”的内容将这些行绑定在一起

这里是基本的php,如果它与这个问题相关的话

$order = '';

  for($i=1; $i < $content['itemCount'] + 1; $i++) {

    $item_name = 'item_name_'.$i;
    $item_quantity =  'item_quantity_'.$i;
    $item_price = 'item_price_'.$i;
    $item_weight = 'item_weight_'.$i;
    $item_id = 'item_id_'.$i;
    $item_shop = 'item_shopid_'.$i;
    $item_type = 'item_type_'.$i;  
    $item_shopname = 'item_shopname_'.$i;  
    $item_size = 'item_size_'.$i;  
    $item_strain = 'item_strain_'.$i; 
    $item_subtype = 'item_subtype_'.$i; 






$order .= <<<EOT



    <li>

        <h2 style="font-size:14px;">$content[$item_name]</h2>
        <p style="text-indent:5px;padding-top:5px;"><strong>Quantity:</strong> $content[$item_quantity]</p> 
        <p style="text-indent:5px;"><strong>Grams:</strong> $content[$item_weight]</p>
        <p style="text-indent:5px;"><strong>Catagory:</strong> $content[$item_type]</p> 
        <p style="text-indent:5px;"><strong>Sub Catagory:</strong> $content[$item_subtype]</p>      
        <p style="text-indent:5px;"><strong>Size:</strong> $content[$item_size]</p>     
        <p style="text-indent:5px;"><strong>Strain:</strong> $content[$item_strain]</p>




            <p class="ui-li-aside"><strong>$currency$content[$item_price].00</strong></p>
            <span class="ui-li-count">$i</span>

    </li>








EOT;
}
$order='';
对于($i=1;$i<$content['itemCount']+1;$i++){
$item\u name='item\u name.$i;
$item\u quantity='item\u quantity.$i;
$item_price='item_price.$i;
$item\u weight='item\u weight.$i;
$item\u id='item\u id.$i;
$item\u shop='item\u shopid.$i;
$item\u type='item\u type.$i;
$item\u shopname='item\u shopname.$i;
$item\u size='item\u size.$i;
$item_应变='item_应变.$i;
$item\u subtype='item\u subtype.$i;

$order.=从现实世界的理解来看,有一个订单头和订单行的概念。因此,您可以在两个不同粒度的表中设计基础表。 订单标题表-应仅包含上级信息,如订单号、客户号、订单日期等

订单行项目表-应包含所有子项目,对于每个订单号,可以有1行或多行,其中包含订单号、项目号、数量等信息


希望您觉得这很有用。从现实世界的理解来看,这是订单头和订单行的概念。因此,您可以在两个不同粒度的表中设计基础表。例如。 订单标题表-应仅包含上级信息,如订单号、客户号、订单日期等

订单行项目表-应包含所有子项目,对于每个订单号,可以有1行或多行,其中包含订单号、项目号、数量等信息

希望您觉得这很有用。谢谢我在这里看到两张表(我想第三张是您已经有的):

  • order
    表是存储每个订单的地方。一个订单=该表中的一条记录。您可以在此处查看一些与订单相关的详细信息,如交货地址、交货方式等
  • order\u item
    表格是存储每个订购项目的地方。这是多对一的关系。一个订单中有多个订购项目。这里有项目相关的详细信息,如给定产品的数量、大小和其他内容
    • 我在这里看到两张表(我想第三张是您已经拥有的):

      • order
        表是存储每个订单的地方。一个订单=该表中的一条记录。您可以在此处查看一些与订单相关的详细信息,如交货地址、交货方式等
      • order\u item
        表格是存储每个订购项目的地方。这是多对一的关系。一个订单中有多个订购项目。这里有项目相关的详细信息,如给定产品的数量、大小和其他内容

      在下订单之前,我不会将订单存储在数据库中。我会将订单存储在会话中。类似于后者。FWIW,我会在下订单后将未完成的订单存储在数据库中。我想存储它们。但是,谢谢,除非有人有更多详细信息,否则我现在将使用订单号。另外,我的措辞可能会被混淆sing.这是一个送货网站。因此,下单后,我需要有一个活动订单,在订单完成后,它将被更新。在订单下单之前,我不会将订单存储在数据库中。我会将它们存储在会话中。类似于后一种。FWIW,我会将未完成的订单存储在数据库中。是的,在下单之后。我想要储存它们,但谢谢,除非有人有更多的细节,否则我现在就用订单号。另外,我的措辞可能有点混乱。这是一个送货网站。因此,在下订单后,我需要有一个活动订单,在订单完成后,它也会更新。我理解并感谢你提供的详细信息。我已经开始准备好了在我脑海中画出解决方案,然后你给我一张图片。虽然我有你的注意力,但是…我想扩展。这意味着我可以有一个包含每个人的订单项目的表?这些项目有一个ID,可以将它们与订单匹配。然后,我假设未来的查询将使用联接完成。另外,如果我说的是对的,“所有订单项目最终都在一个大表中”。对于像Postdates这样的大公司来说,这是如何工作的?他们在一个表中有数百万个项目吗?在什么时候你需要一个新表,还是需要?是的,你执行一个
      JOIN
      查询,用一个查询来检索这些记录。我不知道“Postdates”有多大“是的,但如果我们谈论的是
      order\u item
      表中的数以百万计的项,那么当您想要扩展时,就会涉及到分区(或者我不知道的其他解决方案),但总的来说,它存储在那个特定的表中。谢谢你的帮助!在我开始写它之前,我只是想先了解一下这个概念。我理解并感谢你提供的细节。我开始在脑海中绘制解决方案,然后你给我一张图片。虽然我有你的注意力,但我想扩展。这意味着我可以有一个包含每个人的订单项目的表吗?这些项目的ID将与订单匹配。然后,我假设将来的查询将使用联接完成。另外,如果我说“所有订单项目最终都在一个大表中”是对的话。对于像postmates这样的大公司,这是如何工作的?它们在一个表中有数百万个项目吗?在什么时候需要一个新表,还是需要?是的,您执行一个
      JOIN
      查询,用一个查询来检索这些记录。我不知道“postma”有多大