Req #47051 [Opn->Dup]: pg_fetch_object does not convert to literal PHP booleans

From: Date: Thu, 13 Feb 2020 17:10:06 +0000
Subject: Req #47051 [Opn->Dup]: pg_fetch_object does not convert to literal PHP booleans
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-225562@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=47051&edit=1 ID: 47051 Updated by: cmb@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: Open +Status: Duplicate Type: Feature/Change Request Package: PostgreSQL related Operating System: Linux, Ubuntu 8.04 PHP Version: 5.2.8 -Assigned To: +Assigned To: cmb Block user comment: N Private report: N New Comment: Request #78855 is about the same feature, and since that has a more recent PR attached, I'm closing this ticket as duplicate. Previous Comments: ------------------------------------------------------------------------ [2013-06-29 04:02:36] yohgaki@php.net 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. ------------------------------------------------------------------------ [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] felipe@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

« previous php.bugs (#225562) next »