Php 在Mysql数据库中存储最大数量的项目中的数组

Php 在Mysql数据库中存储最大数量的项目中的数组,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,这是本市餐馆的目录,每家餐馆都有菜单和储存的物品 餐厅是表名 {ID,Name,MenuType(),Items()} 我想为添加到MysqlDB的每个餐厅存储不同的MenuTypes() 例如: 麦当劳将有3种不同的菜单类型() “早餐”、“汉堡包”、“甜点”中有X份 每个菜单中的项目 所以我需要MeuTypes()和Items()的数组 在Phpmyadmin中,如何将这些存储为?只有瓦尔查尔 如何通过PHP(SQL)中的循环获取存储在MenuTypes()中的items() 提前多谢 查看

这是本市餐馆的目录,每家餐馆都有菜单和储存的物品

餐厅是表名

{ID,Name,MenuType(),Items()}

我想为添加到MysqlDB的每个餐厅存储不同的MenuTypes()

例如:

麦当劳将有3种不同的菜单类型() “早餐”、“汉堡包”、“甜点”中有X份 每个菜单中的项目

所以我需要MeuTypes()和Items()的数组

在Phpmyadmin中,如何将这些存储为?只有瓦尔查尔

如何通过PHP(SQL)中的循环获取存储在MenuTypes()中的items()

提前多谢

查看
serialize()
函数…将数组序列化为文本的过程

虽然我会说,有很多更好的方法来做你想做的事…通过关系,但我不会告诉你如何构建你的数据库

但是Mysql是一个关系数据库,所以为什么不利用它呢

即。。。 如果你想过滤,你会怎么做??或搜索菜单数据???
你想怎么做就怎么做

或者,这并不是说你不能,它只是涉及到额外的步骤,而不仅仅是对数据库的查询,你将不得不取消序列化数据,并使用Jquery或类似的东西进行客户端过滤

没什么大不了的……但在开始序列化之前,一定要想一个更好的结构。

看看
serialize()
函数……将数组序列化为文本的过程

虽然我会说,有很多更好的方法来做你想做的事…通过关系,但我不会告诉你如何构建你的数据库

但是Mysql是一个关系数据库,所以为什么不利用它呢

即。。。 如果你想过滤,你会怎么做??或搜索菜单数据???
你想怎么做就怎么做

或者,这并不是说你不能,它只是涉及到额外的步骤,而不仅仅是对数据库的查询,你将不得不取消序列化数据,并使用Jquery或类似的东西进行客户端过滤


没什么大不了的……但在开始序列化之前,一定要想一个更好的结构。

像上面一样,您可能会想使用关系数据库。下面是一个粗略的想法。。“pk”=主键,“fk”=外键。显然,我忽略了其他一些重要领域

tblRestaurant
   pkRestaurant

tblRestaurantTypesItems
   fkRestaurant
   fldMenuType
   fldItem
要检索项目,可以运行如下查询

SELECT * FROM tblRestaurant R INNER JOIN tblRestaurantTypesItems RTI ON
               R.pkRestaurant=RTI.fkRestaurant ORDER BY R.pkRestaurant
我还没有测试这个查询,但这是一个粗略的想法

这将返回一个记录集,如:

|Arbys    |Breakfast|EGGS
|Arbys    |Lunch    |Burger
|McDonalds|Breakfast|McMuffin
|McDonalds|Breakfast|Hashbrown
|McDonalds|Breakfast|Coffee
|McDonalds|Lunch    |Big Mac
|McDonalds|Dinner   |Fries
或者如果你想更具体一些

SELECT * FROM tblRestaurant R INNER JOIN tblRestaurantTypesItems RTI ON
               R.pkRestaurant=RTI.fkRestaurant WHERE R.pkRestaurant="McDonalds"
               AND RTI.fldMenuType="Breakfast"   
这将返回一些类似于

|McDonalds|Breakfast|McMuffin
|McDonalds|Breakfast|Hashbrown
|McDonalds|Breakfast|Coffee    
编辑:我意识到我偏离了“菜单类型”的含义,用早餐午餐晚餐代替早餐、汉堡、甜点。也会是同样的想法

因此,在PHP中,如果您有一个$menuTypes()数组,并且每个类型都有一个$items()数组,就像您在原始问题中所说的,$menuTypes['breakfast]=$breakfastItems(),您可以这样做。。不是最好的方法,但是我

$restaurant = "McDonalds"
foreach ($menuTypes as $items){
    $menuTypeName = key($items); //not sure if key() works on elements of arrays
                                 // which are arrays themselves

     foreach($items as $item){
       //Assuming "McDonalds" Is already in tblRestaurant so we don't need to
       //insert it now
       $query="INSERT INTO tblRestaurantTypesItems VALUES('".$restaurant."',
              '".$menuTypeName."', '".$item."')"

        //execute query
     }
}   

像上面一样,您可能希望使用关系数据库。下面是一个粗略的想法。。“pk”=主键,“fk”=外键。显然,我忽略了其他一些重要领域

tblRestaurant
   pkRestaurant

tblRestaurantTypesItems
   fkRestaurant
   fldMenuType
   fldItem
要检索项目,可以运行如下查询

SELECT * FROM tblRestaurant R INNER JOIN tblRestaurantTypesItems RTI ON
               R.pkRestaurant=RTI.fkRestaurant ORDER BY R.pkRestaurant
我还没有测试这个查询,但这是一个粗略的想法

这将返回一个记录集,如:

|Arbys    |Breakfast|EGGS
|Arbys    |Lunch    |Burger
|McDonalds|Breakfast|McMuffin
|McDonalds|Breakfast|Hashbrown
|McDonalds|Breakfast|Coffee
|McDonalds|Lunch    |Big Mac
|McDonalds|Dinner   |Fries
或者如果你想更具体一些

SELECT * FROM tblRestaurant R INNER JOIN tblRestaurantTypesItems RTI ON
               R.pkRestaurant=RTI.fkRestaurant WHERE R.pkRestaurant="McDonalds"
               AND RTI.fldMenuType="Breakfast"   
这将返回一些类似于

|McDonalds|Breakfast|McMuffin
|McDonalds|Breakfast|Hashbrown
|McDonalds|Breakfast|Coffee    
编辑:我意识到我偏离了“菜单类型”的含义,用早餐午餐晚餐代替早餐、汉堡、甜点。也会是同样的想法

因此,在PHP中,如果您有一个$menuTypes()数组,并且每个类型都有一个$items()数组,就像您在原始问题中所说的,$menuTypes['breakfast]=$breakfastItems(),您可以这样做。。不是最好的方法,但是我

$restaurant = "McDonalds"
foreach ($menuTypes as $items){
    $menuTypeName = key($items); //not sure if key() works on elements of arrays
                                 // which are arrays themselves

     foreach($items as $item){
       //Assuming "McDonalds" Is already in tblRestaurant so we don't need to
       //insert it now
       $query="INSERT INTO tblRestaurantTypesItems VALUES('".$restaurant."',
              '".$menuTypeName."', '".$item."')"

        //execute query
     }
}   

那么,您永远不需要按菜单类型或项目进行查询?那么,您永远不需要按菜单类型或项目进行查询?