The DSN syntax shown here did not work for me, but this did:
<?php
$dbh = new PDO("pgsql:dbname=$dbname;host=$host", $username, $password );
?>
As opposed to
<?php
$dbh = new PDO('pgsql:dbname=$dbname;
host=$host;
username=$username;
password=$password');
?>
Which makes sense and is more PGSQL standard.
PDO_PGSQL DSN
(PECL PDO_PGSQL >= 0.1.0)
PDO_PGSQL DSN — Conectarse a bases de datos PostgreSQL
Descripción
El PDO_PGSQL Data Source Name (DSN) o nombre de origen de los datos, está compuesto de los siguientes elementos, delimitados por espacios o punto y comas:
- prefijo DSN
-
El prefijo DSN es
pgsql:. - host
-
El nombre del host donde reside el servidor de base de datos.
- port
-
El puerto en el que el servidor de base de datos se está ejecutando.
- dbname
-
El nombre de la base de datos.
- user
-
El nombre de usuario para la conexión. Si se especifica el nombre de usuario en el DSN, PDO ignora el valor del argumento del nombre de usuario en el constructor PDO.
- password
-
La contraseña del usuario para la conexión. Si se especifica la contraseña en el DSN, PDO ignora el valor del argumento de la contraseña en el constructor PDO.
Note:
Los campos de tipo bytea son retornados como flujos.
Ejemplos
Example #1 Ejemplos PDO_PGSQL DSN
El siguiente ejemplo muestra un DSN PDO_PGSQL para conectarse a una base de datos PostgreSQL:
pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass
You can also connect to PostgreSQL via a UNIX domain socket by leaving the host empty. This should have less overhead than using TCP e.g.:
$dbh = new PDO('pgsql:user=exampleuser dbname=exampledb password=examplepass');
In fact as the C library call PQconnectdb underlies this implementation, you can supply anything that this library call would take - the "pgsql:" prefix gets stripped off before PQconnectdb is called, and if you supply any of the optional arguments (e.g. user), then these arguments will be added to the string that you supplied... Check the docs for your relevant PostgreSQL client library: e.g.
http://www.postgresql.org/docs/8.3/static/libpq-connect.html
If you really want, you can use ';'s to separate your arguments - these will just be converted to spaces before PQconnectdb is called.
Tim.
The PDO_PGSQL DSN should be seperated by semi-colons not spaces. It should follow the convention like the rest of the PDO DSNs.
'pgsql:dbname=example;user=nobody;password=change_me;host=localhost'
