这是该市的餐馆目录,每家餐厅都有菜单和存储的物品。
餐馆是表名
{ID,Name,MenuType(),Items()}
我想为添加到MysqlDB的每家餐馆存储不同的MenuTypes()。
例如:
麦当劳会有3种不同的MenuTypes(): “早餐”,“汉堡包”,“甜点”,他们有X AMMOUNT 每个菜单中的项目
所以我需要MeuTypes()和Items()
的数组在Phpmyadmin中,我如何存储这些?只有Varchar?
如何通过PHP(SQL)中的循环获取存储在MenuTypes()中的items()?
提前多多谢谢!
答案 0 :(得分:1)
如上所述,您可能希望使用关系数据库。下面是一个粗略的想法..“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
编辑:我意识到我通过使用早餐午餐而不是早餐,汉堡包,甜点而误入了“菜单类型”的OP。会是同样的想法。
所以在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
}
}
答案 1 :(得分:0)
查看serialize()
函数....将数组序列化为文本的过程...
http://www.webmaster-source.com/2009/02/15/php-serialize-function/
what's the point of serializing arrays to store them in the db?
虽然我会说,有更好的方法可以做你想要的......关系,但我不会告诉你如何构建你的数据库......
但Mysql是一个关系数据库,所以为什么不利用它。
...即
如果你想过滤你会怎么做?或者搜索菜单数据???
你想要的方式,你将无法做到。
或者,它不是你不能,它只是涉及额外的步骤,而不仅仅是对数据库的查询,你将不得不反序列化数据,并使用Jquery或客户端过滤Jquery或类似的东西。
没什么大不了的......但是在开始序列化路线之前一定要考虑更好的结构。