У меня есть база данных Microsoft Access, и я пытаюсь запросить таблицу с помощью PHP и выпустить действительный JSON. У меня есть эквивалентный код для базы данных MSSQL, я пытаюсь сделать свой код так же, как и для базы данных Access.Использование PHP для запроса файла MDB и возврата JSON
Вот код 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);
Вот что я пытался для 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);
I рода вслед за этим, чтобы попытаться подключиться к базе данных: http://phpmaster.com/using-an-access-database-with-php/
В настоящее время это дает мне 500 внутренних ошибок сервера. Я ожидаю, что строки, такие как это будет сохранено в переменной $json
[
{
"col1":"col value",
"col2":"col value",
"col3":"col value",
},
{
"col1":"col value",
"col2":"col value",
"col3":"col value",
},
{
etc...
}
]
Может кто-то помочь мне порт код MSSQL я выше, так что я могу использовать его с базой данных MDB? Спасибо за помощь!
EDIT: Я закомментировать строки по одному, и он бросает мне ошибку 500 на линии $data = $db->query($sql);
. Я просмотрел журнал ошибок, и я получаю сообщение об ошибке Call to a member function query() on a non-object
. У меня уже есть строка extension=php_pdo_odbc.dll
без объявления в моем файле php.ini. Кто-нибудь знает, в чем проблема?
научиться делать использовать эхо отлаживать и находить, где находится ваша ошибка. один из которых я уже нашел: 'while ($ row = fetch ($ data, SQLSRV_FETCH_ASSOC))' должно быть 'while ($ row = $ data-> fetch (PDO :: FETCH_ASSOC))'. 'do {..} while' нужно удалить. просто посмотрите пример, который вы опубликовали, его все там – x4rf41
Пожалуйста, обновите свой вопрос, чтобы сообщить нам, что вы ожидаете, что происходит сейчас, и что вы пытались его исправить. Подумайте о том, какие сообщения об ошибках вы получите, а также описание ресурсов, которые вы использовали, чтобы помочь решить проблему и как они не смогли ответить на ваш вопрос. –
Когда я запускаю это, он дает мне 500 Internal Server Error, поэтому я не вижу никаких эхо-строк (я получаю эту ошибку даже после внесения изменений, которые вы предложили). У меня есть файл MDB в том же каталоге, что и мой сайт, просто для тестирования прямо сейчас. И я обновил вопрос, Джордж! – TFischer