Opens a PDO connection.
array $connection_options: The database connection settings array.
\PDO A \PDO object.
Overrides Connection::open
public static function open(array &$connection_options = array()) {
// Allow PDO options to be overridden.
$connection_options += array(
'pdo' => array(),
);
$connection_options['pdo'] += array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// Convert numeric values to strings when fetching.
PDO::ATTR_STRINGIFY_FETCHES => TRUE,
);
$pdo = new PDO('sqlite:' . $connection_options['database'], '', '', $connection_options['pdo']);
// Create functions needed by SQLite.
$pdo
->sqliteCreateFunction('if', array(
__CLASS__,
'sqlFunctionIf',
));
$pdo
->sqliteCreateFunction('greatest', array(
__CLASS__,
'sqlFunctionGreatest',
));
$pdo
->sqliteCreateFunction('pow', 'pow', 2);
$pdo
->sqliteCreateFunction('length', 'strlen', 1);
$pdo
->sqliteCreateFunction('md5', 'md5', 1);
$pdo
->sqliteCreateFunction('concat', array(
__CLASS__,
'sqlFunctionConcat',
));
$pdo
->sqliteCreateFunction('substring', array(
__CLASS__,
'sqlFunctionSubstring',
), 3);
$pdo
->sqliteCreateFunction('substring_index', array(
__CLASS__,
'sqlFunctionSubstringIndex',
), 3);
$pdo
->sqliteCreateFunction('rand', array(
__CLASS__,
'sqlFunctionRand',
));
// Execute sqlite init_commands.
if (isset($connection_options['init_commands'])) {
$pdo
->exec(implode('; ', $connection_options['init_commands']));
}
return $pdo;
}