Req #47051 [Opn->Asn]: pg_fetch_object does not convert to literal PHP booleans
| From: | yohgaki@php.net | Date: | Thu, 29 Mar 2012 09:59:23 +0000 |
| Subject: | Req #47051 [Opn->Asn]: pg_fetch_object does not convert to literal PHP booleans | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-168963@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: yohgaki@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: Assigned
Type: Feature/Change Request
Package: PostgreSQL related
Operating System: Linux, Ubuntu 8.04
PHP Version: 5.2.8
-Assigned To:
+Assigned To: yohgaki
Block user comment: N
Private report: N
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] 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