ВСТАВИТЬ в столбец ENUM - PullRequest
       14

ВСТАВИТЬ в столбец ENUM

1 голос
/ 23 августа 2009

У меня есть столбец ENUM в db, например, ENUM ('us', 'uk', 'fr', 'intl')

Я использую чекбоксы для подтверждения страны в HTML, а PHP -

SET country ='".$country_us." ".$country_uk." ".$country_fr." ".$country_intl."'

Запрос проходит, но не добавляется в столбец.

Если я просто сделаю

country ='$country_us'

- отлично работает.

Вот мой предыдущий вопрос для получения дополнительной информации. Спасибо за вашу помощь!

Ответы [ 4 ]

3 голосов
/ 23 августа 2009

ENUM может быть только одним значением за раз. Если вы хотите разрешить несколько значений одновременно, используйте SET .

0 голосов
/ 23 августа 2009

Нельзя хранить несколько значений в столбце (MySQL) ENUM. ENUM означает, что вы можете вставить ровно один значений, определенных для столбца. Вместо этого используйте столбец SET и обновите его значения следующим образом:

UPDATE ... SET country = 'uk,us';

Т.е. назначить разделенный запятыми список допустимых значений. См. mysql документацию для получения дополнительной информации.

Еще лучше, используйте для этого отдельные таблицы:

CREATE TABLE country (
    cty_id     INTEGER NOT NULL PRIMARY KEY,
    cty_code   CHAR(2) NOT NULL UNIQUE,
    cty_title  VARCHAR(30) NOT NULL,
);

CREATE TABLE map_story_country (
    story_id INTEGER,
    cty_id   INTEGER,
    PRIMARY KEY (story_id, cty_id)
);

Затем вставьте идентификационную карту для каждой страны, которую вы хотите присвоить своей истории / статье.

0 голосов
/ 23 августа 2009

Столбец ENUM означает, что в нем можно хранить только одно значение , и это значение должно быть одним из определенных членов ENUM.

Вы должны включить свои флажки для переключателей, чтобы пользователь мог выбрать только одну страну. В своем коде вы извлекаете это единственное значение и вставляете его в столбец.

0 голосов
/ 23 августа 2009

Похоже, вы пытаетесь вставить несколько значений в один столбец ENUM. Это невозможно.

Если бы вы могли указать только одно значение страны, я бы порекомендовал использовать переключатели, и тогда ваш второй пример будет работать правильно. Однако, поскольку вы, возможно, захотите иметь country_us и country_uk, столбец ENUM не способен хранить эту информацию.

Лучшая модель для этого звучит как что-то, на что лучше всего ответить в вашем первоначальном вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...