DSN (Previous) (Next) Querying

View this page in Last updated: Sun, 28 Sep 2008
English | Dutch | French | German | Hungarian | Japanese | Polish | Russian | Spanish | Plain HTML

Connecting

Connecting -- Connecting and disconnecting a database

Description

To instantiate a database object you have several methods available using MDB2.

To connect to a database you have to use the function factory(), connect() or singleton(), which require a valid DSN as the first parameter. This parameter can either be a string or an array. If using an array, the array used gets merged with the default information:
$dsn = array(
    'phptype'  => false,
    'dbsyntax' => false,
    'username' => false,
    'password' => false,
    'protocol' => false,
    'hostspec' => false,
    'port'     => false,
    'socket'   => false,
    'database' => false,
    'new_link' => false,
    'service'  => false, // only in oci8
);
Any elements you set override the defaults and the remainder stay at their defaults.

The second parameter is the optional $options array that can contain runtime configuration settings for this package.

Tableau 39-2. List of options

NameTypeDescription
sslbooléen determines if ssl should be used for connections
field_caseentier CASE_LOWER|CASE_UPPER: determines what case to force on field/table names
disable_querybooléen determines if queries should be executed
result_classchaîne de caractères class used for result sets
buffered_result_classchaîne de caractères class used for buffered result sets, default is MDB2_Result_Common
result_wrap_classchaîne de caractères class used to wrap result sets into, default is MDB2_Result_Common
result_bufferingbooléen should results be buffered or not?
fetch_classchaîne de caractères class to use when fetch mode object is used
persistentbooléen persistent connection?
debugentier numeric debug level
debug_handlerchaîne de caractères function/method that captures debug messages
debug_expanded_outputbooléen BC option to determine if more context information should be send to the debug handler
default_text_field_lengthentier default text field length to use
lob_buffer_lengthentier LOB buffer length
log_line_breakchaîne de caractères line-break format
idxname_formatchaîne de caractères pattern with '%s' for index name
seqname_formatchaîne de caractères pattern with '%s' for sequence name
savepoint_formatchaîne de caractères pattern with '%s' for auto generated savepoint names
seqcol_namechaîne de caractères sequence column name
quote_identifierbooléen if identifier quoting should be done when check_option is used
use_transactionsbooléen if transaction use should be enabled
decimal_placesentier number of decimal places to handle
portabilityentier portability constant
modulesarray short to long module name mapping for __call()
emulate_preparedbooléen force prepared statements to be emulated
datatype_maparray map user defined datatypes to other primitive datatypes
datatype_map_callbackarray callback function/method that should be called

In case of success you get a new instance of the database class. It is strongly recommended to check this return value with PEAR::isError() (will detect PEAR_Error or any subclass) or the MDB2_Driver_Common specific isError().

To disconnect use the method disconnect() from your database class instance.

DSN (Previous) (Next) Querying

Download Documentation Last updated: Sun, 28 Sep 2008
Do you think that something on this page is wrong? Please file a bug report or add a note.
User Notes:
Note by: uwe.hausdorff@interone.de
I had to change some pear sources manually as the oracle parameters NLS_NUMERIC_CHARATERS and NLS_DATE_FORMAT are not editable by the configuration parameters.

The setting NLS_DATE_FORMAT is disabled by default, NLS_NUMERIC_CHARATERS are always set. This setting is not european standard and may override individual application settings!

see /MDB2/oci8.php in class MDB2_Driver_oci8, function _doConnect on line 395.
My file is version "oci8.php,v 1.192 2007/03/04 22:27:11 quipo Exp"

if (empty($this->dsn['disable_iso_date'])) {
$query = "ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'";
$err =& $this->_doQuery($query, true, $connection);
if (PEAR::isError($err)) {
$this->disconnect(false);
return $err;
}
}

$query = "ALTER SESSION SET NLS_NUMERIC_CHARACTERS='. '";
$err =& $this->_doQuery($query, true, $connection);
if (PEAR::isError($err)) {
$this->disconnect(false);
return $err;
}
Note by: CJ
A helpful note that took me days to figure out:

When connecting to a MSSQL database, specify the hostname as: "my.host.name,PORT". Don't use a colon, use a comma. That took so long!
Note by: user@example.com
In PHP5 all objects are passed by reference similar to the way Java does it.

From: http://www.php.net/manual/en/language.oop5.basic.php

"When assigning an already created instance of a class to a new variable, the new variable will access the same instance as the object that was assigned. This behaviour is the same when passing instances to a function. A copy of an already created object can be made by cloning it."
Note by: purej
Is this really true here ?
Quote: "new return reference automatically"
When i read it correctly its just for explicit usage of "new" but thats not the case, we use the Factory methods to get our MDB2 Object.
Note by: user@example.com
Note that using =& to assign objects is deprecated in PHP5:
"Since PHP 5, new return reference automatically so using =& in this context is deprecated and produces E_STRICT level message."