Edit report at https://bugs.php.net/bug.php?id=47051&edit=1
ID: 47051 Updated by: yohg...@php.net Reported by: germ dot van dot eck at gmail dot com Summary: pg_fetch_object does not convert to literal PHP booleans Status: Assigned Type: Feature/Change Request Package: PostgreSQL related Operating System: Linux, Ubuntu 8.04 PHP Version: 5.2.8 Assigned To: yohgaki Block user comment: N Private report: N New Comment: I've verified current PostgreSQL git source. It seems they have been removed static OID definition from their code. This means that OID of certain type may change version to version. I'll verify postgresql developers if it's safe to assume OID of basic types would not change. Previous Comments: ------------------------------------------------------------------------ [2012-01-26 13:17:45] morphunreal at gmail dot com I have created & submitted a patch that allows pgsql to return booleans and integers for all fetches. to test / use-> - get current source for php/ext/pgsql - apply patch - phpize - ./configure --with-pgsql=/path/to/pgsql/c-api - make - stop web server - copy modules/pgsql.so over existing one - add to /etc/php.d/pgsql.conf pgsql.convert_boolean_type = 1 pgsql.convert_integer_type = 1 - start web server ------------------------------------------------------------------------ [2009-01-11 01:05:09] fel...@php.net This isn't a bug, it's only as pgsql works. Moved to Feature/Change request. ------------------------------------------------------------------------ [2009-01-09 13:30:24] germ dot van dot eck at gmail dot com I did not complete my sentence... "This causes that postgresql." should be "This causes that postgresql's booleans are not very usable in PHP". ------------------------------------------------------------------------ [2009-01-09 13:24:51] germ dot van dot eck at gmail dot com Description: ------------ Postgresql booleans are internally stored as either 'f' or 't' (False or True). On retrieval using pg_fetch_object, they are simply retrieved as PHP strings, rather than either 0 or 1, or even better, false or true. This causes that postgresql. I am not sure, but I think in the data returned by the server, there is metadata explaining the field types and so they could be automatically converted to PHP bools. This is from a bugreport and related forum topic that was made for the CodeIgniter framework. Bugreport (slighly unrelated CI bug, but this issue was discussed in the comments): http://codeigniter.com/bug_tracker/bug/6303/ Forum topic: http://codeigniter.com/forums/viewthread/101001/ Reproduce code: --------------- <?php $conn_string = "host=testserver dbname=testdb user=foo password=bar"; $dbconn = pg_connect($conn_string); pg_query('CREATE TABLE test(test boolean)'); pg_query('INSERT INTO test(test) VALUES(TRUE)'); $res = pg_query('SELECT * FROM test'); $obj = pg_fetch_object($res); echo "\n".$obj->test."\n"; pg_query('DROP TABLE test'); ?> Expected result: ---------------- 1 Actual result: -------------- t ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=47051&edit=1