#23720 [Opn->Csd]: DB::Connect does not accept string for $dsn when using pgsql
| From: | lsmith@php.net | Date: | Tue, 20 May 2003 15:44:05 +0000 |
| Subject: | #23720 [Opn->Csd]: DB::Connect does not accept string for $dsn when using pgsql | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-16517@lists.php.net to get a copy of this message | ||
ID: 23720
Updated by: lsmith@php.net
Reported By: brian at onlineinfo dot net
-Status: Open
+Status: Closed
Bug Type: PEAR related
Operating System: Debian, Solaris
PHP Version: 4.3.1
Assigned To: lsmith
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[2003-05-20 10:23:37] 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:12:38] 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:01:44] 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.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=23720&edit=1