php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #23720 DB::Connect does not accept string for $dsn when using pgsql
Submitted: 2003-05-20 10:01 UTC Modified: 2003-05-20 10:44 UTC
From: brian at onlineinfo dot net Assigned: lsmith (profile)
Status: Closed Package: PEAR related
PHP Version: 4.3.1 OS: Debian, Solaris
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: brian at onlineinfo dot net
New email:
PHP Version: OS:

 

 [2003-05-20 10:01 UTC] brian at onlineinfo dot net
When passing a valid DSN to DB::Connect and connecting to pgsql, DB_Pgsql expects the dsn to be an array instead of a string.  The result is a broken connect string since PHP will happily treat the string as an array.  The solution is to replace:

$this->dsn = $dsninfo;

with:

if (is_array($dsninfo)) {
    $this->dsn = $dsninfo;
} else {
    $this->dsn = $dsninfo = DB::parseDSN($dsninfo);
}

in the connect method of DB/pgsql.php.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-05-20 10:12 UTC] lsmith@php.net
Are you trying to switch the dsn after object creation with the factory method? This feature is not supported as far as I know.

DB_pgsql::connect() should not be called by the user.
 [2003-05-20 10:23 UTC] brian at onlineinfo dot net
Here is the connect code we are using:

    $db = DB::factory('pgsql_ex');
    if (DB::isError($db)) return $db;
    $connect = $db->Connect($dsn, $persistent = TRUE);
    if (DB::isError($connect)) return $connect;
    $db->setFetchMode(DB_FETCHMODE_ASSOC);
    $db->setOption('seqname_format','%s');
    return $db;

(pgsql_ex is a small class extending DB_pgsql that adds a metadata method)
 [2003-05-20 10:44 UTC] lsmith@php.net
this is the expected behavior. You should be able to use DB::connect() with your custom class, which handles string dsn and options for convinience. 
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Tue May 13 01:01:28 2025 UTC