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

Reply via email to