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