zoilomora / doctrine-dbal-msaccess
Doctrine DBAL implementation for Microsoft Access
Installs: 227
Dependents: 0
Suggesters: 0
Security: 0
Stars: 16
Watchers: 3
Forks: 10
Open Issues: 1
Requires
- php: ^7.4
- ext-mbstring: *
- ext-odbc: *
- ext-pdo: *
- doctrine/dbal: ^2.12
Requires (Dev)
- pccomponentes/coding-standard: ^1.2
- phpstan/phpstan: ^0.12.56
- phpunit/phpunit: ^9.4
This package is auto-updated.
Last update: 2024-11-27 02:16:49 UTC
README
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