Мне нужно получить данные из MS Access 2007 (файлы mdb и accdb) для веб-сайта, написанного на PHP 7. Страницы не должны быть динамическими или интерактивными. Им просто нужно представить данные, хранящиеся в базе данных.
Локальная среда разработки: Windows 7, IIS 7.5
Онлайн сервер: хостинг А2, Linux (CloudLinux Server выпуск 6.9), Apache / 2.2.34
Веб-страница ADOdb для доступа говорит «Windows Да, Unix Нет». Я предполагаю, что это означает, что я могу использовать ADOdb для подключения к Access в моей локальной среде, но не на онлайн-сервере. Я полагаю, у меня есть следующие варианты:
Правильно ли я понял мои варианты? Я перечислил их, как мне кажется, в порядке предпочтения, поэтому, если кто-то не предложит иного, думаю, я перейду к третьему (извлечение в CSV, использование fgetcsv (), без ADOdb), так как первые два не сработает
Спасибо за вашу помощь.
Основная проблема — это драйвер ODBC. {Microsoft Access Driver (*.mdb, *.accdb)}
поставляется с Microsoft Access или Microsoft Access Database Engine, которые доступны только для Windows.
Однако существуют альтернативные драйверы ODBC, которые работают в Unix и unixODBC. Популярным открытым исходным кодом является mdbtools, который ограничен, но может быть использован для подключения доступа к PHP на Unix с использованием PDO и ODBC. Есть также коммерческие альтернативы, которые более полно представлены.
Как только вы это заработаете, не должно быть проблем с использованием драйвера ODBC в PHP. Обратите внимание, что на виртуальном хостинге это может быть невозможно.
Кроме того, вы можете использовать php-jdbc bridge с UCanAccess. Это может быть все еще с открытым исходным кодом и более полнофункциональным, чем mdbtools, но его сложнее правильно настроить.
Вам не нужно конвертировать «всю базу данных» из Access, чтобы использовать Mysql, только таблицы. Затем вы можете связать их обратно в базу данных Access с помощью коннектора MySql odbc, и, пока имена таблиц совпадают, вы даже не заметите разницы, все ваши формы, запросы и все будет работать.
После этого на вашем локальном компьютере будет запущен сервер MySql, который, если вы создадите пользователя с соответствующими правами и перенаправите порт через ваш маршрутизатор (перенаправляя трафик с порта 3306 или с любого порта, назначенного вашему серверу, на ваш компьютер), и позволит трафика через ваш брандмауэр, ваш веб-сайт может затем получить доступ, читать и писать в вашу базу данных.
Если вы хотите запросить базу данных из php, mysqli_query будет работать просто отлично. Большинство веб-сайтов, которые запускаются из данных, используют MySql, так что это решение также на будущее.