2014-12-04 2 views
1

Я хотел бы знать, как я могу вставить тип «enum» в запросе mysqli. Я имею в виду, если тип поля строки и я выполнить запрос, как это:Вставка 'ENUM' в MYSQLi

INSERT INTO 'table'(field1,field2) VALUES ('?,?'); $stmt->bind_param('ss',$value1,$value2); $stmt->execute();

Все нормально, но если я изменю «поле2» для перечислимого типа:

CREATE TABLE IF NOT EXISTS table ( field1 varchar(20) NOT NULL, field2 ENUM('Administrator', 'User', 'Guest');

Затем этот запрос вставляет первое поле, а второе пусто. Я проверил, что второе значение поля является одним из определенных типов ENUM.

спасибо.

ответ

0

изменение

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

в

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

Вы определили параметры для ENUM.

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

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

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

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

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

+0

Вы были правы, тип перечисления вставлен как строковое значение. Спасибо вам за помощь. – Charles

-1

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

Я спасал специальный символ в перечислимого типа (ударение)

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

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

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

Благодарим вас за ответы и время.

Смежные вопросы