From:
Operating system: SuSE Linux 11 SP1
PHP version: 5.3.8
Package: PostgreSQL related
Bug Type: Bug
Bug description:pgsql module returns strings from SELECT queries for each
unempty field
Description:
------------
pgsql modules returns all non-null values as String type data instead of
corresponding php datatype when applicable. PDO is not affected though.
Test script:
---------------
# CREATE TABLE netusers (id bigserial NOT NULL, firstname character varying
NOT NULL, middlename character varying NOT NULL DEFAULT ''::character
varying, lastname character varying NOT NULL DEFAULT ''::character varying,
company_id integer NOT NULL DEFAULT 0, department_id integer NOT NULL
DEFAULT 0, connect_date date NOT NULL DEFAULT now(), disconnect_date date,
login character varying NOT NULL DEFAULT ''::character varying, password
character varying NOT NULL DEFAULT ''::character varying, email text NOT
NULL DEFAULT ''::character varying, email_alias text NOT NULL DEFAULT
''::character varying, computer character varying NOT NULL DEFAULT
''::character varying, ipaddr bigint NOT NULL DEFAULT 0, macaddr bigint NOT
NULL DEFAULT 0, inet_date date, phone_local text NOT NULL DEFAULT ''::text,
phone_global text NOT NULL DEFAULT ''::text, comment text, cable_id bigint
NOT NULL DEFAULT 0, CONSTRAINT netusers_pk PRIMARY KEY (id )) WITH
(OIDS=FALSE);
# Put a row into that table with some random (but according to columns'
datatype) data
<?php
$dsn = 'pgsql:host=host;port=5432;dbname=testdb';
$username = 'test';
$password = 'testpw';
$conn = new PDO($dsn, $username, $password);
$stmt = $conn->query('select * from netusers');
$o = $stmt->fetchObject();
//This gets appropriate datatypes for all non-null fields (int for int,
string for string etc... Except (hell yeah!) arrays)
var_dump($o);
//*************************
$conn2 = pg_connect("host=host port=5432 dbname=testdb user=test
password=testpw");
$stmt2 = pg_query($conn2, "SELECT * FROM netusers");
$o2 = pg_fetch_object($stmt2);
//This gets an object with every non-null property having datatype string
var_dump($o2);
Expected result:
----------------
# This is the PDO output part of the test script
object(stdClass)#3 (20) {
["id"]=>
int(0)
["firstname"]=>
string(3) "asd"
["middlename"]=>
string(7) "dasfsdf"
["lastname"]=>
string(8) "sdafdsdf"
["company_id"]=>
int(0)
["department_id"]=>
int(0)
["connect_date"]=>
string(10) "2011-10-28"
["disconnect_date"]=>
NULL
["login"]=>
string(6) "asfdfg"
["password"]=>
string(6) "dfsdfg"
["email"]=>
string(22) "[email protected]"
["email_alias"]=>
string(0) ""
["computer"]=>
string(5) "sdasd"
["ipaddr"]=>
int(0)
["macaddr"]=>
int(0)
["inet_date"]=>
NULL
["phone_local"]=>
string(6) "234234"
["phone_global"]=>
string(0) ""
["comment"]=>
string(14) "svsdfgsdfgsdfg"
["cable_id"]=>
int(0)
}
Actual result:
--------------
# This is the PGSQL output part of the test script
object(stdClass)#4 (20) {
["id"]=>
string(1) "0"
["firstname"]=>
string(3) "asd"
["middlename"]=>
string(7) "dasfsdf"
["lastname"]=>
string(8) "sdafdsdf"
["company_id"]=>
string(1) "0"
["department_id"]=>
string(1) "0"
["connect_date"]=>
string(10) "2011-10-28"
["disconnect_date"]=>
NULL
["login"]=>
string(6) "asfdfg"
["password"]=>
string(6) "dfsdfg"
["email"]=>
string(22) "[email protected]"
["email_alias"]=>
string(0) ""
["computer"]=>
string(5) "sdasd"
["ipaddr"]=>
string(1) "0"
["macaddr"]=>
string(1) "0"
["inet_date"]=>
NULL
["phone_local"]=>
string(6) "234234"
["phone_global"]=>
string(0) ""
["comment"]=>
string(14) "svsdfgsdfgsdfg"
["cable_id"]=>
string(1) "0"
}
--
Edit bug report at https://bugs.php.net/bug.php?id=60187&edit=1
--
Try a snapshot (PHP 5.4):
https://bugs.php.net/fix.php?id=60187&r=trysnapshot54
Try a snapshot (PHP 5.3):
https://bugs.php.net/fix.php?id=60187&r=trysnapshot53
Try a snapshot (trunk):
https://bugs.php.net/fix.php?id=60187&r=trysnapshottrunk
Fixed in SVN:
https://bugs.php.net/fix.php?id=60187&r=fixed
Fixed in SVN and need be documented:
https://bugs.php.net/fix.php?id=60187&r=needdocs
Fixed in release:
https://bugs.php.net/fix.php?id=60187&r=alreadyfixed
Need backtrace:
https://bugs.php.net/fix.php?id=60187&r=needtrace
Need Reproduce Script:
https://bugs.php.net/fix.php?id=60187&r=needscript
Try newer version:
https://bugs.php.net/fix.php?id=60187&r=oldversion
Not developer issue:
https://bugs.php.net/fix.php?id=60187&r=support
Expected behavior:
https://bugs.php.net/fix.php?id=60187&r=notwrong
Not enough info:
https://bugs.php.net/fix.php?id=60187&r=notenoughinfo
Submitted twice:
https://bugs.php.net/fix.php?id=60187&r=submittedtwice
register_globals:
https://bugs.php.net/fix.php?id=60187&r=globals
PHP 4 support discontinued:
https://bugs.php.net/fix.php?id=60187&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=60187&r=dst
IIS Stability:
https://bugs.php.net/fix.php?id=60187&r=isapi
Install GNU Sed:
https://bugs.php.net/fix.php?id=60187&r=gnused
Floating point limitations:
https://bugs.php.net/fix.php?id=60187&r=float
No Zend Extensions:
https://bugs.php.net/fix.php?id=60187&r=nozend
MySQL Configuration Error:
https://bugs.php.net/fix.php?id=60187&r=mysqlcfg