2014-10-04 2 views
2

Я пытаюсь подключить php-сервер к базе данных доступа к ms, и я пробовал все, что еще не могу подключиться.Соединение с 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 Redistributable от this link.

Также я попробовал все, что показано in this video.

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

Извините за мой плохой английский, и я новичок в php и подключен к ms-доступу. Я подключился к mysql, но никогда не получал доступа.

+0

У вас есть сценарий 'echo (8 * PHP_INT_SIZE). "-бит
"; '. Результат («32-разрядный» или «64-разрядный») должен соответствовать версии установленного вами компонента Database Database Engine. –

+0

он дает мне 32-битный выход. Он должен быть 64 бит ?? –

+0

Хммм. Ответ [здесь] (http://stackoverflow.com/a/3233881/2144390) предполагает, что вышеупомянутый тест * может * ввести в заблуждение. Можете ли вы создать.mdb для тестирования и попробуйте подключиться к нему с помощью 'Driver = {Microsoft Access Driver (* .mdb)}' (без «, * .accdb»)? –

ответ

3

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

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

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

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

можно ли получить 64-битную версию php? –

+0

@ user3933143 Это, конечно, возможно, но основная страница загрузки PHP для Windows [здесь] (http://windows.php.net/download/) говорит «** Примечание: ** x64 сборки в настоящее время ** экспериментальные **" , (Возможно, именно поэтому у вас есть 32-разрядная версия.) Также есть вопрос, как «отбросить» другую версию PHP в существующую установку WAMP. К сожалению, у меня нет опыта в этом. –

+0

благодарит за вашу помощь. –

Смежные вопросы