Как сохранить список данных (например, массив) в ячейке mysql? (но по-прежнему можно искать)
Я новичок в MySQL, так что я, вероятно, просто не знаю, как правильно настроить что-то вроде этого.
В основном, каждый ряд в моей таблице - это разная еда. У меня есть столбцы для основных вещей, таких как описание...
Но у меня есть массив "ингредиенты" и массив "сколько" в массиве.
По сути, я могу использовать ингредиент ArrayArch [0] howMuch[0], чтобы отобразить ингредиент и его количество.
Итак, я хотел бы сохранить оба этих массива в ячейке для ряда продуктов.
Я слышал, что могу сериализовать массив и сохранить его. Но мне нужно, чтобы он был доступен для поиска.
(Кроме того, не существует установленного ограничения на количество ингредиентов. Поэтому я не могу иметь столбец для каждого из них, поэтому я собираюсь маршрут массива)
редактировать: еще 1 вещь, если это может помочь... как много никогда не будет ничего, кроме int 0 1 2 3 4 5 6 7 8 9
Каков наилучший способ сделать это?
Я занимаюсь программированием на AS3 и использую AMFPHP для подключения к Mysql
4 ответа
Создайте новую таблицу возможных ингредиентов. Затем создайте другой стол, который свяжет ваш стол с едой и набор ингредиентов с количеством.
YOUR_FOOD_TABLE
food_id (PK)
description
...
FOOD_INGREDIENTS
food_id (FK)
ingredient_id (FK)
quantity
INGREDIENTS
ingredient_id (PK)
ingredient_name
Сериализация все равно будет доступна для поиска по тексту, но реальное решение здесь состоит в том, чтобы разбить ингредиенты на другую таблицу и объединить их в отдельную таблицу, включая количество.
Намного лучше иметь таблицу ингредиентов, содержащую столбец (food_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