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.
PDO_PGSQL DSN
(PECL PDO_PGSQL >= 0.1.0)
PDO_PGSQL DSN — Connexion aux bases de données PostgreSQL
Description
Le Data Source Name (DSN) de PDO_PGSQL est composé des éléments suivants, délimités par des espaces ou des points-virgules :
- Préfixe DSN
-
Le préfixe DSN est
pgsql:. - host
-
L'hôte sur lequel le serveur de base de données se situe.
- port
-
L'hôte sur lequel le serveur de base de données se situe.
- dbname
-
Le nom de la base de données.
- user
-
Le nom de l'utilisateur pour la connexion. Si vous spécifiez l'utilisateur dans le DSN, PDO ignorera la valeur de l'utilisateur en argument dans le constructeur PDO.
- password
-
Le mot de passe de l'utilisateur pour la connexion. Si vous spécifiez le mot de passe dans le DSN, PDO ignorera la valeur du mot de passe en argument dans le constructeur PDO.
Note:
Les champs bytea sont retournés sous forme de flux.
Exemples
Exemple #1 Exemples avec PDO_PGSQL DSN
L'exemple suivant montre PDO_PGSQL DSN pour se connecter à une base de données PostgreSQL :
pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass
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.
