вставка перечисления postgres с использованием pg_query - PullRequest
0 голосов
/ 09 ноября 2010

У меня есть таблица с одним полем типа enum. Я выполняю следующий запрос, используя pg_query

INSERT INTO users (email, facebook_id, first_name, middle_name, last_name, birth_date, password, gender, school_id, timezone, email_verified, role_id) VALUES ('robert@1599309412.com', NULL, 'Robert', '', 'George', '1984-05-20', 'Some password', 'MALE', 1, '0.0', false, 1 );


pg_query($connection, 'INSERT INTO users (email, facebook_id, first_name, middle_name, last_name, birth_date, password, gender, school_id, timezone, email_verified, role_id) VALUES (\'robert@2084537193.com\', NULL, \'Robert\', \'\', \'George\', \'1984-05-20\', \'Some password\', \'MALE\', 1, \'0.0\', false, 1 )')

но я получаю ошибку, как показано ниже.

Предупреждение PHP: pg_query (): Ошибка запроса: ОШИБКА: недопустимое значение ввода для пола перечисления: "MALE" ЛИНИЯ 1: ... rt ',' ',' George ',' 1984-05-20 ',' Some password ',' MALE ', 1, ...

Непосредственное выполнение запроса в клиенте postgres не дает этой ошибки. Какое решение для этого?

1 Ответ

0 голосов
/ 09 ноября 2010
  1. Пожалуйста, убедитесь, что случаи совпадают. Postgres не слишком строг к этому (рассмотрите имена таблиц), но это может стоить проверки.
  2. Наличие атрибута пола enum 'на мой взгляд, излишние накладные расходы, лучше иметь столбец male int со значениями 1, 0 и, возможно, нулевым для неизвестного / не указанного. При значениях, превышающих 1, он по-прежнему ориентирован на будущее на случай появления нового пола. :)
  3. Если вы действительно привязаны к перечислениям, вы можете рассмотреть возможность использования PDO, потому что это делает привязки значений намного проще и намного более безопасными.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...