Я хотел бы знать, как я могу вставить тип ‘enum’ в запрос MySQL. Я имею в виду, если тип поля — строка, и я выполняю запрос следующим образом:
INSERT INTO 'table'(field1,field2) VALUES ('?,?');
$stmt->bind_param('ss',$value1,$value2);
$stmt->execute();
Все хорошо, но если я изменю ‘field2’ на enum type:
CREATE TABLE IF NOT EXISTS table (
field1 varchar(20) NOT NULL,
field2 ENUM('Administrator', 'User', 'Guest');
Затем этот запрос вставляет первое поле, но второе пустое. Я проверил, что второе значение поля является одним из определенных типов ENUM.
Спасибо.
Вы определили варианты для ENUM
,
Кроме того, вы вставляете значения в него.
Насколько вы вводите предварительно определенные значения, в вашем случае:
('Administrator', 'User', 'Guest')
Вы можете вставить ENUM
поле, как если бы это была строка, это не создаст проблему.
Если вы введете любое значение, отличное от определенных, например, например, Administrator
… база данных вызовет ошибку.
менять
INSERT INTO 'table'(field1,field2) VALUES ('?,?');
в
INSERT INTO 'table'(field1,field2) VALUES (?,?);
Я нашел проблему, здесь это идет:
Я сохранял специальный символ в типе enum (акцент)
field2 ENUM('Administrator', 'Usér', 'Guest');
и когда мой запрос пытался вставить Usér
это терпит неудачу. Поэтому я изменил определение таблицы на это:
field2 ENUM('Administrator', 'Usér', 'Guest');
и теперь все работает нормально.
Спасибо за ваши ответы и время.