Używanie PHP do odpytywania pliku MDB i zwracania JSON
Mam bazę danych Microsoft Access i próbuję wysłać zapytanie do tabeli przy użyciu PHP i wypisać poprawny JSON. Mam równoważny kod dla bazy danych MSSQL. Próbuję sprawić, aby mój kod robił to samo, ale tylko dla bazy danych Access.
Oto kod MSSQL
$myServer = "server";
$myDB = "db";
$conn = sqlsrv_connect ($myServer, array('Database'=>$myDB));
$sql = "SELECT *
FROM db.dbo.table";
$data = sqlsrv_query ($conn, $sql);
$result = array();
do {
while ($row = sqlsrv_fetch_array ($data, SQLSRV_FETCH_ASSOC)) {
$result[] = $row;
}
} while (sqlsrv_next_result($data));
$json = json_encode ($result);
sqlsrv_free_stmt ($data);
sqlsrv_close ($conn);
Oto, co próbowałem dla pliku MDB
$dbName = "/filename.mdb";
if (!file_exists($dbName)) {
die("Could not find database file.");
}
$db = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", $user, $password);
$sql = "SELECT *
FROM cemetery";
$data = $db->query($sql); // I'm getting an error here
$result = array();
// Not sure what do do for this part...
do {
while ($row = fetch($data, SQLSRV_FETCH_ASSOC)) {
$result[] = $row;
}
} while (sqlsrv_next_result($data));
$json = json_encode ($result);
Podążałem za tym, aby połączyć się z bazą danych:http://phpmaster.com/using-an-access-database-with-php/
Obecnie daje mi to 500 wewnętrznych błędów serwera. Oczekuję, że łańcuch taki jak ten zostanie zapisany w zmiennej$json
[
{
"col1":"col value",
"col2":"col value",
"col3":"col value",
},
{
"col1":"col value",
"col2":"col value",
"col3":"col value",
},
{
etc...
}
]
Czy ktoś może mi pomóc w przeniesieniu kodu MSSQL, który mam powyżej, aby móc go używać z bazą danych MDB? Dzięki za pomoc!
EDYCJA: Komentuję wiersze po kolei i rzuca mi błąd 500 w linii$data = $db->query($sql);
. Sprawdziłem dziennik błędów i otrzymuję błądCall to a member function query() on a non-object
. Mam już linięextension=php_pdo_odbc.dll
niekomentowany w moim pliku php.ini. Ktoś wie, jaki może być problem?