база данных — PHP MS Access соединение не работает

Я пытаюсь подключить php-сервер к базе данных ms access и все перепробовал, но не могу подключиться.

Вот мой код

<?php
$conn=odbc_connect('testdb','','');
//$conn=odbc_connect("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\wamp\www\test\testdb.accdb", '', '');
if (!$conn) {
exit("Connection Failed: " . $conn);
}

$sql="SELECT * FROM testdb";
$rs[]=odbc_exec($conn,$sql);
if (!$rs) {
exit("Error in SQL");
}

while (odbc_fetch_row($rs))    //<-------line 14
{
$json_output[] = odbc_result($rs, "test");
print(json_encode($json_output));

}
odbc_close($conn);
?>

Если я использую

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

тогда я получаю следующую ошибку

Warning: odbc_fetch_row() expects parameter 1 to be resource, array given in C:\wamp\www\test\new 1.php on line 14

если я использую

$conn=odbc_connect("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\wamp\www\test\testdb.accdb", '', '');

тогда я получаю ниже строки как ошибку.

Warning: odbc_connect(): SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in C:\wamp\www\test\new 1.php on line 3

Я отредактировал мой файл php.ini, чтобы включить расширение odbc

;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
extension=php_pdo_odbc.dll  <--- here
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll

Также я скачал и установил Microsoft Access Database Engine 2010, распространяемый из эта ссылка.

Также я попробовал все, что показано в этом видео.

Я также сделал именно то, что написано в принятом ответе по этой ссылке и я использую 64-битную версию WampServer 2.4 на 64-битной Windows 7, а также у меня 64-битный офис Microsoft.

Извините за мой плохой английский, и я новичок в php и подключении к MS Access. Я сделал подключение к MySQL, но никогда не получить доступ.

1

Решение

Тестирование подтвердило, что, несмотря на установленную 64-разрядную версию WampServer, PHP работал как 32-разрядный процесс. Более старый драйвер Jet для ODBC (Driver={Microsoft Access Driver (*.mdb)}) может успешно прочитать файл .mdb и 64-разрядная версия Jet отсутствует, поэтому PHP должен работать как 32-разрядный.

Теперь, когда установлен 64-битный Office, проблема заключается в том, что 32-битному PHP потребуется 32-битная версия более нового драйвера Access Database Engine (ACE), чтобы манипулировать файлом .accdb, но Microsoft не поддерживает 32-разрядные и 64-разрядные версии ACE на одном компьютере. (Веб-поиск покажет, что есть способ заставить это произойти, но это не рекомендуется, потому что это может повредить Office.)

Итак, окончательное разрешение будет одним из следующих:

  • используйте файл .mdb вместо файла .accdb и продолжайте использовать Jet под 32-битным PHP,
  • найти настройку WAMP, которая запускает PHP как 64-битный процесс, или
  • перейти на 32-разрядную версию Office.
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]