Awesome
Doctrine DBAL for Microsoft Access
An implementation of the doctrine/dbal library to support Microsoft Access databases in Microsoft OS.
There are some functionalities that are not supported by Microsoft Access in a PDO-based connection. For these functionalities the implementation uses a direct connection through ODBC.
OS Requirements
- Microsoft Access Database Engine Redistributable (2010 or 2016).
- Register a DSN in ODBC Data Source Administrator
odbcad32.exe
.
Installation
-
Install via composer
composer require zoilomora/doctrine-dbal-msaccess
Register a DSN
We don't need to reinvent the wheel, on the internet there are hundreds of tutorials on how to set up a DSN for Microsoft Access. I leave you a video that I think explains it perfectly.
Once the DSN is configured we will have to configure the connection in the following way:
$connection = \Doctrine\DBAL\DriverManager::getConnection(
[
'driverClass' => \ZoiloMora\Doctrine\DBAL\Driver\MicrosoftAccess\Driver::class,
'driverOptions' => [
'dsn' => 'name of the created dsn',
],
]
);
Discovered problems
Character encoding problems
The default character encoding in Access databases is Windows-1252. If you want to convert the data to UTF-8, a simple solution would be:
$field = \mb_convert_encoding($field, 'UTF-8', 'Windows-1252');
If you want all the data to be encoded automatically to UTF-8 (with the performance reduction that it may imply) configure the driver as follows:
$connection = \Doctrine\DBAL\DriverManager::getConnection(
[
'driverClass' => \ZoiloMora\Doctrine\DBAL\Driver\MicrosoftAccess\Driver::class,
'driverOptions' => [
'dsn' => 'name of the created dsn',
'charset' => 'UTF-8',
],
]
);
License
Licensed under the MIT license
Read LICENSE for more information