Ich versuche, von einer Access-Datenbank zu lesen, die MDBTools Treiber verwendet, um eine odbc_connect
auf Ubuntu 11.10 auszuführen. Es funktioniert gut, wenn Sie das DSN-Setup in /etc/odbc.ini
verwenden.DSN-lose Verbindung mit PHP ODBC mit MDBTools Treiber
Im Folgenden sind die Inhalte von /etc/odbc.ini
:
[logindb]
Description = Microsoft Access Try DB
Driver = MDBToolsODBC
Database = /home/folder1/TestDb.mdb
Servername = localhost
Das Treiber Attribut in odbc.ini
Referenzen MDBToolsODBC
, so, hier ist mein ODBC-Setup in /etc/odbcinst.ini
:
[MDBToolsODBC]
Description = MDB Tools ODBC
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage =
CPTimeout =
CPReuse =
Mein Problem ist, wenn $conn = odbc_connect('logindb','','');
mit , Ich muss den Hardcoded Wert für den Speicherort der Datenbank verwenden. Idealerweise möchte ich den ersten Parameter odbc_connect
mit einer DSN-less-Verbindung angeben, so dass meine Datenbankdatei eine Variable sein kann (liest von verschiedenen dbs). Etwas wie:
if ($cond1) {
$db = "/home/folder1/TestDb.mdb";
} else {
$db = "/home/folder1/TestDb2.mdb";
}
$conn = odbc_connect("odbc:Driver={MDBToolsODBC};Dbq=$db",'','');
habe ich auch versucht, es ohne die odbc: Präfix, aber es hat nicht funktioniert. Kann mir jemand sagen, warum die Angabe des DSN funktioniert, aber wenn ich versuche, es im Handumdrehen unter Verwendung von ähnlichen Attributen zu spezifizieren, funktioniert es nicht? Ich denke, dass es mit den Parametern und dem Inhalt des ersten Parameters in der DSN-losen Verbindung zu tun hat. Wie immer wird jede Hilfe sehr geschätzt.
@Rocket: die Variablennamen in '/etc/odbc.ini Nach ', sollte es nicht' Database = $ db' sein? – eggyal
@eggyal: Das hat auch nicht geholfen. Es heißt immer noch: 'SQL error: [unixODBC] [Treiber-Manager] Datenquellenname nicht gefunden und kein Standardtreiber angegeben. –
@Rocket: Und wenn Sie 'Driver =/usr/lib/libmdbodbc.so.0' explizit angeben? – eggyal