Próbuję odczytać z bazy danych Access przy użyciu sterowników MDBTools, aby wykonać odbc_connect
na Ubuntu 11.10. Działa dobrze, gdy używa się konfiguracji DSN w /etc/odbc.ini
.Połączenie bez DSN z PHP ODBC przy użyciu sterownika MDBTools
Poniżej znajduje się treść /etc/odbc.ini
:
[logindb]
Description = Microsoft Access Try DB
Driver = MDBToolsODBC
Database = /home/folder1/TestDb.mdb
Servername = localhost
Atrybut kierowcy w odbc.ini
odniesień MDBToolsODBC
, tak, tutaj jest moja konfiguracja ODBC w /etc/odbcinst.ini
:
[MDBToolsODBC]
Description = MDB Tools ODBC
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage =
CPTimeout =
CPReuse =
Mój problem jest, gdy za pomocą $conn = odbc_connect('logindb','','');
, Muszę użyć zakodowanej wartości dla lokalizacji bazy danych. Idealnie, chciałbym określić pierwszy parametr odbc_connect
przy użyciu połączenia bez DSN, więc mój plik bazy danych może być zmienną (będzie czytać z różnych baz danych). Coś jak:
if ($cond1) {
$db = "/home/folder1/TestDb.mdb";
} else {
$db = "/home/folder1/TestDb2.mdb";
}
$conn = odbc_connect("odbc:Driver={MDBToolsODBC};Dbq=$db",'','');
Próbowałem również bez prefiksu odbc:, ale to nie zadziałało. Czy ktoś może mi powiedzieć, dlaczego określenie DSN działa, ale kiedy próbuje określić go w locie za pomocą tego, co wygląda jak te same atrybuty, to nie działa? Myślę, że ma to związek z parametrami i zawartością pierwszego parametru w połączeniu bez DSN. Jak zawsze, każda pomoc jest bardzo doceniana.
@Rocket: Następujące nazwy zmiennych w '/etc/odbc.ini ', czy nie powinno to być' Database = $ db'? – eggyal
@eggyal: To też nie pomogło. Nadal jest napisane: "Błąd SQL: [unixODBC] [Driver Manager] Nie znaleziono nazwy źródła danych i nie określono domyślnego sterownika". –
@Rocket: A jeśli jawnie określisz 'Driver =/usr/lib/libmdbodbc.so.0'? – eggyal