Вставка ‘ENUM’ в MYSQLi

Я хотел бы знать, как я могу вставить тип ‘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.

Спасибо.

1

Решение

Вы определили варианты для ENUM,

Кроме того, вы вставляете значения в него.

Насколько вы вводите предварительно определенные значения, в вашем случае:

('Administrator', 'User', 'Guest')

Вы можете вставить ENUM поле, как если бы это была строка, это не создаст проблему.

Если вы введете любое значение, отличное от определенных, например, например, Administrator… база данных вызовет ошибку.

2

Другие решения

менять

 INSERT INTO 'table'(field1,field2) VALUES ('?,?');

в

 INSERT INTO 'table'(field1,field2) VALUES (?,?);
0

Я нашел проблему, здесь это идет:

Я сохранял специальный символ в типе enum (акцент)

field2 ENUM('Administrator', 'Usér', 'Guest');

и когда мой запрос пытался вставить Usér это терпит неудачу. Поэтому я изменил определение таблицы на это:

field2 ENUM('Administrator', 'Usér', 'Guest'); и теперь все работает нормально.

Спасибо за ваши ответы и время.

-1
По вопросам рекламы [email protected]