Я пытаюсь подключиться к серверу БД MSSQL, используя PDO. Я загрузил некоторые DLL файлы с веб-страницы Microsoft и скопировал их в папку wampserver wamp \ bin\php\php5.5.12\ext. Затем я редактировал php.ini, который находится в папке wamp\bin\apache\apache2.4.9\bin.
Я добавил следующие строки:
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_ts.dll
;extension=php_sqlsrv_55_nts.dll
;extension=php_pdo_sqlsrv_55_nts.dll
Я выключил wampserver и запустил его снова. Я вижу эти четыре расширения в меню PHP → PHP Extensions, когда я нажимаю значок wampserver tray.
Затем я попытался создать соединение, используя следующий код:
$conn = new PDO('sqlsrv:Server=1.2.3.4,1433;Database=database.mdf',
'user', 'password',
array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
Когда я вызываю страницу из браузера, я получаю
не удалось найти драйвер
ошибка.
Во-первых, Как я могу подключиться к серверу mssql с PDO? Во-вторых, есть ли какая-то точка, которую я пропустил по поводу инсайтализации и/или конфигурации?
Ниже вы можете увидеть раздел расширения файлов php.ini.
extension=php_bz2.dll
extension=php_curl.dll
extension=php_com_dotnet.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_gmp.dll
extension=php_intl.dll
extension=php_imap.dll
;extension=php_interbase.dll
extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll ; Must be after mbstring as it depends on it
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
extension=php_shmop.dll
; The MIBS data available in the PHP distribution must be installed.
; See http://www.php.net/manual/en/snmp.installation.php
;extension=php_snmp.dll
extension=php_soap.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_ts.dll
;extension=php_sqlsrv_55_nts.dll
;extension=php_pdo_sqlsrv_55_nts.dll
EDIT 2:
Наконец, я обнаружил, что мои файлы dll ara несовместимы с моим текущим wampserver64. Я ищу правильные файлы.
Я удалил WampServer64 и установил WampServer32. Тогда все в порядке.
Мой объект подключения
$conn = new PDO('sqlsrv:Server='.$host.';Database=' . $db, $user, $pass,
array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
)
);
Есть еще один момент: я случайно набрал расширение .mdf после имени базы данных, которого не должно быть. Потому что, если я напишу, я получу
28000 - SQLSTATE [28000]: [Microsoft] [драйвер ODBC 11 для SQL Server] [SQL Server] Ошибка входа для пользователя "zkanoca_dbuser".
ошибка.
У меня есть сервер Windows, где я запускаю PHP, я просто проверил здесь расширения, которые я включил:
extension=php_mssql.dll
extension=php_pdo.dll
extension=php_pdo_mssql.dll
extension=php_pdo_odbc.dll #(might not need it)
И ваше соединение будет выглядеть так:
$conn = new PDO('mssql:host=1.2.3.4;dbname=database', 'user', 'password');
Надеюсь это поможет.
ext
, вы должны использовать phpinfo()
для проверки установки, перезапустить apache и перезагрузить сервер
Вы должны включить:
extension=php_pdo_mssql.dll
в вашем php.ini.
extension=php_pdo_sqlsrv_53_ts.dll
phpinfo()
лиphpinfo()
драйвер PDO для SQLSRV или нет.