Access Datenbank via PHP

Hallo allerseits,

ich bin seit mehreren Tagen auf der Suche nach einer Lösung, um Microsoft Access Datenbanken (*.mdb)-Dateien mit PHP zu öffnen und zu beschreiben. Ich habe bereits sehr viel ausprobiert und versucht, komme jedoch immer auf die selbe Fehlermeldung:

SQL error: [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben, SQL state IM002 in SQLConnect in

Diesem Problem bin ich bereits mehrere Male nachgegangen, leider ohne Erfolg. Es kann praktisch alles heissen. Auf jeder Seite gibt’s da eine andere Lösung.

ODBC ist auf Windows installiert inkl. PHP Extension PDO
Das ist noch mein Code:

<?php $mdbFilename = 'next.mdb'; $conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", 'Administrator', ''); if (!$conn) { exit("Connection Failed: " . $conn); } $sql="SELECT * FROM TControl"; $result=odbc_exec($conn, $sql); $db_row_count=odbc_num_rows($result); ?>

Hast du dir schon mal phpinfo() ausgeben lassen und geschaut ob der PDO Support für mysql, odbc enabled ist? Sowie „ODBC Connection Pooling“ auf „Enabled, strict matching“ steht?

http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2012/05/access_03.png

Wenn ja, solltest du dich eigentlich ohne Probleme zur Datenbank verbinden können.

[PHP]<?php
$db = $_SERVER[„DOCUMENT_ROOT“] . „test.mdb“;
if (file_exists($db) === false) {
die(„Could not find database file.“);
}

$pdo = new PDO(„odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db; Uid=; Pwd=;“);[/PHP]

Vielen Dank für deine schnelle Antwort.

Die PHPInfo hab ich bereits überprüft. Da stimmt alles exakt so wie du beschrieben hast.
Habe noch kurz dein Code ausprobiert; die Datei wurde gefunden, aber es kommt wieder der selbe Fehler wie oben angegeben.
Auf anderen Testservern Windows und Linux bereits getestet, jedoch erfolglos :frowning:

Muss ich da noch einen speziellen Treiber von Seiten Windows installieren?

Hast du ein 32 oder 64-Bit System ?

Schau dir mal diesen Beitrag dazu an.

Eine Ähnliche Geschichte fand ich bereits, und führte dies so aus. Jedoch auch das ohne Erfolg. Schaute dabei noch ein Youtube-Video wie man eine neue Verknüpfung zu ODBC anlegen kann und wie man es richtig macht. Was ebenfalls erfolglos.

Bei mir handelt es sich tatsächlich um ein 64-Bit System. Muss ich in diesem Zuge die 64-Bit Treiber rausknallen?

Bei mir hatte das funktioniert mit ADODB 5.19 und PHP 5.3 (32Bit). Nach einem Update auf PHP 5.6 64Bit bekomme ich die gleiche Fehlermeldung wie du. Es kann also durchaus sein, dass es ein Interoperabilitäts-Problem zwischen den 32-Bit DB Treibern und dem 64-Bit PHP gibt. Da ich es nur zum Testen von ADODB nutze, habe ich nicht weiter geforscht. Ein anderes Problem tauchte mit dem Update auf, scheinbar wir da sqLite 2 nicht mehr unterstützt, aber das ist eine andere Baustelle. Mein PC läuft übrigens mit Windows 10 64 Bit.

Upps, habe gerade nochmals getestet und nachdem ich den exakten Treiber Namen mal aus der Registry ausgelesen und geändert habe, geht es nun wieder:

[PHP]//$db_drv_name = „Driver={Microsoft Access Driver (.mdb)}";
$db_drv_name = "Driver=Microsoft Access Driver (
.mdb, *.accdb)“;[/PHP]

Die Namen der Treiber bei Microsoft unterscheiden sich bei 32 und 64Bit, daher fand meine 64-Bit PHP Version die alten 32-Bit Treiber nicht mehr.