2010-11-09 8 views
0

J'ai une table avec un champ de type enum. J'exécute la requête suivante en utilisant pg_querypostgres enum insertion en utilisant 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 ('[email protected]', 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 (\'[email protected]\', NULL, \'Robert\', \'\', \'George\', \'1984-05-20\', \'Some password\', \'MALE\', 1, \'0.0\', false, 1)') 

mais j'obtiens une erreur comme ci-dessous.

PHP Warning: pg_query(): Query failed: ERROR: invalid input value for enum sex: "MALE" LINE 1: ...rt', '', 'George', '1984-05-20', 'Some password', 'MALE', 1,...

L'exécution directe de la requête dans le client postgres ne donne pas cette erreur. Quelle est la solution pour cela?

Répondre

0
  1. Veuillez vous assurer que les boîtiers correspondent. Postgres n'est pas trop strict à ce sujet (considérez les noms des tables), mais ça vaut le coup de vérifier. A mon avis, il est préférable d'avoir une colonne male int avec 1, 0 valeurs et peut-être null pour inconnu/non spécifié
  2. enum Avec des valeurs supérieures à 1, il est toujours à l'épreuve du futur, au cas où un nouveau genre apparaîtrait. :)
  3. Si vous êtes vraiment attaché à enums, vous pouvez envisager d'utiliser PDO, car il rend les valeurs de liaison beaucoup plus faciles et beaucoup plus sécurisées.
+0

il n'y a pas de problème avec les cas ... je suis au courant de ce problème. Je suppose que je vais aller avec votre deuxième point .. faire une colonne int .. – robert

+0

Désolé de ne pas être absolument constructif, j'ai partagé tout ce que je savais. – pestaa

+0

PDO? Utilisez pg_query_params(), c'est tellement plus facile que PDO. PDO ressemble à un PITA par rapport à pg_query_params(). http://nl.php.net/pg_query_params –

Questions connexes