2012-04-10 3 views
1

Kann mir jemand sagen, wenn SQL-Unterstützung mit UnixODBC-Treibern unter Ubuntu mit PHP begrenzt ist? Ich habe einen grundlegenden Lampenserver auf Ubuntu 11.10 eingerichtet, und ich versuche, eine Access-Datenbank abzufragen. Ich habe php5-odbc und MDB Tools installiert. Hier ist ein Beispielcode:LAMP (PHP) Zugriff auf Access-Datenbank mit ODBC mit MDBTools Treiber

<?php 

$conn = odbc_connect('logindb','',''); 

if (!$conn) { 
    echo "failed"; 
} 

$sql = "SELECT * FROM class"; 
//$sql = "SELECT class.desc, event_classes.event_class_id FROM class inner join 
//event_classes on class.class_id = event_classes.class_id"; 

$rs = odbc_exec($conn, $sql); 

while ($d = odbc_fetch_array($rs)) { 
    var_dump($d); 
} 

?> 

Die erste Abfrage, die einfache Auswahl, funktioniert gut. Beim Versuch, einen Join auszuführen (zweite kommentierte Abfrage), erhalte ich jedoch 0 Datensätze. Ich konnte das SQL erfolgreich im SQL-Editor in Access ausführen, daher weiß ich, dass mein SQL korrekt ist und der Join dort funktioniert. Hat jemand damit Erfahrungen gemacht? Ich weiß, dass Linux nicht mit proprietären Microsoft-Produkten kompatibel ist, aber leider muss ich das Lesen einer Access-Datenbank auf Ubuntu machen. Jede Hilfe wird sehr geschätzt.

Antwort

3

mdbtools auf sourceforge wurde seit 2004 nicht aktualisiert. Ich sehe, jemand hat es auf github gesetzt und scheint ein paar kleine Änderungen vorgenommen zu haben. Die SQL-Unterstützung darin war nie so gut, es wurde nur gelesen und ich weiß aus Erfahrung, es unter Perl mit DBD :: ODBC zu versuchen, viele der Tests sind fehlgeschlagen. Ich denke, du wirst es schwer haben.

Es gibt andere zuverlässigere Möglichkeiten, auf eine MS Access-Datenbank von Linux aus zuzugreifen, aber sie sind alle meines Wissens kommerziell. Zum Zugriff auf eine MS Access-Datenbank von Linux weiß ich Folgendes:

Easysoft haben eine ODBC-ODBC-Brücke (die verwendet werden kann, um eine MS Access DB auf einer Windows-Maschine mit dem MS Access ODBC-Treiber zugreifen), aber es erfordert Installieren eines Dienstes auf der Windows-Maschine. Easysoft hat auch einen MS Access ODBC-Treiber, der für den direkten Zugriff auf die mdb/accdb-Datei verwendet werden kann, solange er von Linux aus sichtbar ist.

Es gibt andere kommerzielle ODBC-Brücken von Openlink.

0

Wenn jemand eine hacky Lösung sucht, endete ich mit MDB-Tools, um die Access-Datenbank in CSV-Dateien (1 pro Tabelle) zu konvertieren, und dann durchlaufen die CSV eine "manuelle" Join. Nicht die beste Lösung, aber es funktionierte für ziemlich kleine Tische. Ich hoffe es hilft!