Connecting

Connecting -- Connecting and disconnecting a database

Description

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

Tableau 34-1. Connection functions

FunctionSummaryDescription
factory() Efficient Will instantiate a new MDB2_Driver_Common instance, but will not connect to the database until required. This will delay making the actual connection. This is called lazy connecting. Using this makes sense if it is possible that due to caching inside the application no connection will ever need to be established.
connect() Eager Will instantiate a new MDB2_Driver_Common instance, and will establish a database connection immediately. This way any connection issues will immediately raise an error.
singleton() Available Returns a MDB2_Driver_Common instance. A new MDB2_Driver_Common object is only created once using factory(), subsequent calls to singleton will return a reference to the existing object. This method is preferred over declaring your database object as a global.
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_ink'  => false,
);
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 34-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 recommened 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.

Voir aussi

<< Intro - Portability >>, options, setOption(), getOption().