DSN
DSN -- The Data Source Name
Description
To connect to a database through PEAR::MDB2, you have to create a
valid DSN - data source name. This DSN
consists in the following parts:
-
phptype:
Database backend used in PHP (i.e. mysql
, pgsql etc.)
-
dbsyntax:
Database used with regards to SQL syntax etc.
-
protocol:
Communication protocol to use ( i.e. tcp,
unix etc.)
-
hostspec:
Host specification (hostname[:port])
-
database:
Database to use on the DBMS server
-
username:
User name for login
-
password:
Password for login
-
proto_opts:
Maybe used with protocol
-
option:
Additional connection options in URI query string format.
options get separated by &.
The Following table shows a non complete list of options:
List of options
Name |
Description |
Type |
charset |
Some backends support setting the client charset. (Invokes
setCharset(string $charset, [resource $connection = null])
|
string |
new_link [boolean] |
Some RDBMS do not create new connections when connecting to the same host
multiple times. If this option is set to TRUE it will attempt to force
a new connection.
|
boolean |
The DSN can either be provided as an associative array or
as a string.
The array format is preferred, since it doesn't require a further parsing step
(see the Connecting
chapter for an example).
The string format of the supplied DSN is in its fullest form:
phptype(dbsyntax)://username:password@protocol+hostspec/database?option=value
|
Most variations are allowed:
phptype://username:password@protocol+hostspec:110//usr/db_file.db
phptype://username:password@hostspec/database
phptype://username:password@hostspec
phptype://username@hostspec
phptype://hostspec/database
phptype://hostspec
phptype:///database
phptype:///database?option=value&anotheroption=anothervalue
phptype(dbsyntax)
phptype
|
The currently supported database backends are:
fbsql -> FrontBase
ibase -> InterBase / Firebird (requires PHP 5)
mssql -> Microsoft SQL Server (NOT for Sybase. Compile PHP --with-mssql)
mysql -> MySQL
mysqli -> MySQL (supports new authentication protocol) (requires PHP 5)
oci8 -> Oracle 7/8/9/10
pgsql -> PostgreSQL
querysim -> QuerySim
sqlite -> SQLite 2
|
A second DSN format is supported
phptype(syntax)://user:pass@protocol(proto_opts)/database
|
If your database, option values,
username or password
contain characters used to delineate DSN parts, you
can escape them via URI hex encodings:
: = %3a / = %2f @ = %40
+ = %2b ( = %28 ) = %29
? = %3f = = %3d & = %26
|
Warning |
Please note, that some features may be not supported by all
database backends.
|
Example
Connect to database through a socket
mysql://user@unix(/path/to/socket)/pear
|
Connect to database on a non standard port
pgsql://user:pass@tcp(localhost:5555)/pear
|
Connect to SQLite on a Unix machine using options
sqlite:////full/unix/path/to/file.db?mode=0666
|
Connect to SQLite on a Windows machine using options
sqlite:///c:/full/windows/path/to/file.db?mode=0666
|
Connect to MySQLi using SSL
mysqli://user:pass@localhost/pear?key=client-key.pem&cert=client-cert.pem
|
Connect to Oracle using Service name
oci8://username:password@foo.example.com[:port]/?service=service
|
Connect to Oracle using "Easy Connect" syntax
username/password@[//]host[:port][/service_name]
|