DSN (Previous) (Next) Querying

View this page in Last updated: Mon, 02 Jul 2007
English | Dutch | French | German | Hungarian | Japanese | Polish | Russian | Spanish | Plain HTML

Connecting

Connecting -- Connecting and disconnecting a database

Описание

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,
);
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.

Таблица 35-2. List of options

NameTypeDescription
sslboolean determines if ssl should be used for connections
field_caseinteger CASE_LOWER|CASE_UPPER: determines what case to force on field/table names
disable_queryboolean determines if queries should be executed
result_classstring class used for result sets
buffered_result_classstring class used for buffered result sets, default is MDB2_Result_Common
result_wrap_classstring class used to wrap result sets into, default is MDB2_Result_Common
result_bufferingboolean should results be buffered or not?
fetch_classstring class to use when fetch mode object is used
persistentboolean persistent connection?
debuginteger numeric debug level
debug_handlerstring function/method that captures debug messages
debug_expanded_outputboolean BC option to determine if more context information should be send to the debug handler
default_text_field_lengthinteger default text field length to use
lob_buffer_lengthinteger LOB buffer length
log_line_breakstring line-break format
idxname_formatstring pattern with '%s' for index name
seqname_formatstring pattern with '%s' for sequence name
savepoint_formatstring pattern with '%s' for auto generated savepoint names
seqcol_namestring sequence column name
quote_identifierboolean if identifier quoting should be done when check_option is used
use_transactionsboolean if transaction use should be enabled
decimal_placesinteger number of decimal places to handle
portabilityinteger portability constant
modulesarray short to long module name mapping for __call()
emulate_preparedboolean 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.

DSN (Previous) (Next) Querying

Download Documentation Last updated: Mon, 02 Jul 2007
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."