如何在mysql单元格中存储数据列表(如数组)?(但仍然可以搜索)


How to store a list of data (like an array) in mysql cell? (but have it still be searchable)

我是mysql的新手,所以我可能不知道如何正确设置这样的东西。

基本上,我桌子上的每一排都是不同的食物。我有一些基本内容的专栏,比如描述。。。

但是,我有一个"成分"数组,以及数组中的"多少"数组。

基本上,在我这边,我可以进入ingredientsArray[0]howMuch[0]来显示成分及其含量。

所以,我想把这两个数组都保存在一个单元格中,作为一排食物。

我听说我可以序列化数组并保存它。但我需要它是可搜索的。

(而且,成分的数量没有固定的限制。所以我不喜欢每种成分都有一列,这就是我走阵列路线的原因)

编辑:还有一件事,如果这可能会有所帮助。。。howMuch永远不会是一个int 0 1 2 3 4 5 6 7 8 9 以外的任何东西

对此,最好的方法是什么?

我正在AS3中进行编程,并使用AMFPHP连接到Mysql

创建一个新的可能成分表。然后创建另一张表,将你的食物表和一堆有数量的食材连接起来。

YOUR_FOOD_TABLE
food_id (PK)
description
...
FOOD_INGREDIENTS
food_id (FK)
ingredient_id (FK)
quantity
INGREDIENTS
ingredient_id (PK)
ingredient_name

最好有一个配料表,其中包含一列(food_id),该列引用食物表中记录的id,以及用于配料名称和数量的列。

然后,您可以在配料表上搜索,并获得包含特定配料的所有食品的ID

序列化仍然可以进行文本搜索,但这里真正的解决方案是将成分分解到一个不同的表中,并将它们连接到一个单独的表中(包括数量)。

使用mysql FIND_IN_SET

请在创建此查询之前转义数组值

$insert_qry = 'INSERT INTO `table` (`ingredients`,`howmuch`) VALUES ("'.implode(',',$ingredientsArray).'", "'.implode(',',$howMuch).'")';
$search_qry = 'SELECT * FROM `table` WHERE FIND_IN_SET("bread",`ingredients`);';

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-设置