Sto tentando di leggere da un database di Access utilizzando i driver MDBTools per eseguire un odbc_connect
su Ubuntu 11.10. Funziona correttamente quando si utilizza l'impostazione DSN in /etc/odbc.ini
.Connessione DSN-less con PHP ODBC utilizzando il driver MDBTools
Qui di seguito sono i contenuti di /etc/odbc.ini
:
[logindb]
Description = Microsoft Access Try DB
Driver = MDBToolsODBC
Database = /home/folder1/TestDb.mdb
Servername = localhost
L'attributo driver in odbc.ini
riferimenti MDBToolsODBC
, così, qui è il mio setup ODBC in /etc/odbcinst.ini
:
[MDBToolsODBC]
Description = MDB Tools ODBC
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage =
CPTimeout =
CPReuse =
Il mio problema è, quando si utilizza $conn = odbc_connect('logindb','','');
, Devo usare il valore hardcoded per la posizione del database. Idealmente, vorrei specificare il primo parametro di odbc_connect
usando una connessione senza DSN, in modo che il mio file di database possa essere una variabile (leggerà da diversi dbs). Qualcosa di simile:
if ($cond1) {
$db = "/home/folder1/TestDb.mdb";
} else {
$db = "/home/folder1/TestDb2.mdb";
}
$conn = odbc_connect("odbc:Driver={MDBToolsODBC};Dbq=$db",'','');
Ho anche provato senza l'ODBC: prefisso, ma non ha funzionato. Qualcuno può dirmi perché funzioni il DSN, ma quando provi a specificarlo al volo usando quelli che sembrano gli stessi attributi, non funziona? Penso che abbia a che fare con i parametri e i contenuti del primo parametro nella connessione senza DSN. Come sempre, ogni aiuto è molto apprezzato.
@Rocket: Dopo i nomi delle variabili in '/etc/odbc.ini ', non dovrebbe essere' Database = $ db'? – eggyal
@eggyal: Anche questo non è stato d'aiuto. Dice ancora: 'Errore SQL: [unixODBC] [Driver Manager] Nome origine dati non trovato, e nessun driver predefinito specificato'. –
@Rocket: E se si specifica esplicitamente 'Driver =/usr/lib/libmdbodbc.so.0'? – eggyal