使用pg_query进行postgres枚举插入

时间:2010-11-09 08:12:50

标签: php postgresql

我有一个包含枚举类型字段的表。我使用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','有些密码','MALE',1,......

在postgres客户端直接执行查询不会出现此错误。这是什么解决方案?

1 个答案:

答案 0 :(得分:0)

  1. 请确保案件匹配。 Postgres对它并不太严格(考虑表名),但值得一试。
  2. 在我看来,拥有性别属性enum'd是不必要的开销,你最好拥有一个{0}的male int列和未知/未指定的null。值大于1时,如果出现新的性别,它仍然是面向未来的。 :)
  3. 如果您真的附加到枚举,您可能需要考虑使用PDO,因为它使绑定值更容易,更安全。