У меня есть база данных доступа, которую я хотел бы CRUD с PDO. Когда моя база данных хранится на C:\\wamp\\www\\test.accdb
, я могу подключиться. Тем не менее, интересующая меня база данных хранится на нашем офисном сервере по адресу \\server1\abc\123\test.accdb
. \ server1 отображается на диске z: \ на моем компьютере.PDO подключиться к .accdb по сети
Мой код выглядит следующим образом (стенографические)
<?php
//attempt 1
$file = "\\server1\\abc\\123\\test.accdb";
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb , *.accdb)};Dbq=$file");
//attempt 2
$file = "Z:\\abc\123\\test.accdb";
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb , *.accdb)};Dbq=$file");
?>
оба они дают мне сообщение об ошибке:
SQLSTATE[HY024] SQLDriverConnect: -1023 [Microsoft][ODBC Microsoft Access Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.
Я действительно подключен к серверу. Кто-нибудь здесь имеет какую-то мудрость поделиться?
Какой пользователь работает под управлением PHP? Какая учетная запись пользователя имеет сопоставленный диск? Сопоставления с драйверами выполняются учетной записью пользователя, поэтому, если вы входите в систему как администратор и сопоставляете диск, но процесс PHP выполняется под IIS или Apache из WAMP в качестве сетевой службы или отдельной учетной записи пользователя, она не будет иметь сопоставление. Для пути UNC попробуйте использовать '$ file =" \\\\ server1 \\ abc \\ 123 \\ test.accdb ";' – dlp
спасибо за ввод. "\\\\ server1 \ abc \\ 123 \\ test.accdb" не работает. Аналогичные ошибки. Кроме того, я подозревал, что эти сложности будут существовать с именем сетевого сопоставленного диска. Я бы предпочел использовать «\\ server1 ..... accdb» – GRY
Последнее, что нужно попробовать: '$ file =" \\\\ server1 \\ abc \\ 123 \\ test.accdb "; $ dbh = new PDO ("odbc: Driver = {Microsoft Access Driver (* .mdb, * .accdb)}; Dbq = $ file; Uid = Admin"); ' – dlp