Меню Закрыть

Php подключение к mssql

Недавно передо мной встала задача: работать с MS SQL из PHP. Поиск в Google по ключевым словам «php mssql» и подобным дал уйму ссылок с примерно одинаковой инструкцией:
— раскомментировать в php.ini строчку extension=php_mssql.dll;
— перезапустить Апач/Денвер;
— наслаждаться.

Однако выяснилось, что начиная с версии 5.3 в состав дистрибутива PHP это расширение не входит и, более того, не поддерживается. Для работы с MS SQL рекомендуется драйвер SqlSrv от Microsoft. Пошаговой инструкции по работе с ним найти не смог, поэтому после ряда проб и ошибок написал свою, которую и предлагаю вашему вниманию.

Первое, с чем придётся столкнуться — это соответствие версий PHP, MS SQL, SqlSrv и Windows.

SqlSrv доступен двух версий: 2.0 и 3.0. Версия 2.0 работает только c MS SQL 2008, при этом поддерживает PHP версий 5.2 и 5.3; версия 3.0 работает только с MS SQL 2012, а PHP поддерживает версий 5.3 и 5.4. При этом необходимо помнить, что MS SQL 2012 работает только под Windows Vista и выше.
На моей машине стоит Windows XP, поэтому были взяты: MS SQL 2008, PHP 5.3.5 и SqlSrv 2.0.

Сначала нужно установить сам сервер MS SQL; неожиданностей в установке нет, обо всех проблемах установщик сообщает вовремя и даёт возможность исправить. Желательно также установить MS SQL Server Management Studio: средство управления базами данных. Установка похожа на установку сервера.

Установка связки Apache+PHP описывалась много и подробно, так что здесь не будем её касаться.

Теперь нужно подключить SqlSrv к PHP. Скачанный с сайта Microsoft дистрибутив — это самораспаковывающийся архив с несколькими библиотеками .dll, для разных версий PHP. Так, я использовал php_sqlsrv_53_ts_vc6.dll. Здесь 53 − ветка PHP (5.3.x), ts − Thread Safe дистрибутив, vc6 − использованный компилятор. Если нужно, то эти сведения можно найти в первом же блоке phpinfo(). Подходящую библиотеку нужно скопировать в каталог ext, а также добавить в php.ini строчку

Если PHP только что установлен, нужно также не забыть раскомментировать строчку

PHP готов к работе. Осталось подготовить MS SQL; дело в том, что после установки у него отключены все клиентские протоколы, кроме «Общая память». Нужно их включить; делается это в приложении SQL Server Configuration Manager, идущая в комплекте с сервером.

Теперь все компоненты настроены, и можно проверять работу всей системы. Для этого подойдёт такой скрипт:

function FormatErrors( $errors )
<
echo "Error information:
";

foreach ( $errors as $error )
<
echo "SQLSTATE: ".$error[‘SQLSTATE’]."
";
echo "Code: ".$error[‘code’]."
";
echo "Message: ".$error[‘message’]."
";
>
>

Читайте также:  Htc one m8 сравнение

$serverName = "Имя сервера"; // Имя сервера задавалось при установке; его также можно увидеть при запуске Management Studio

$conn = sqlsrv_connect( $serverName);
if( $conn === false )

Если всё правильно, то на экране будет строчка

И последнее: для работы с базой данных из PHP нужно использовать функции семейства sqlsrv_, а не mssql_.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Я пытаюсь установить соединение с MS SQL и запустить его через PHP на моей машине. Я использую IIS, у меня установлен PHP 7.2 и MS SQL Express 2017. У меня запущена базовая веб-страница, но когда я нажимаю, чтобы открыть страницу PHP, соединение не работает.

Когда я запускаю это, я получаю «Привет измерения на полпути», который предполагает, что страница работает, пока не достигнет линии соединения.
Я не уверен, какое расширение sqlsrv использовать.
Я посмотрел вокруг и вижу версии для 7 и 7.1, но не для 7.2.

Я добавил в extension=php_sqlsrv_71_nts_x86.dll в конец php.ini (и файл существует в C:Program Files (x86)PHPv7.2ext ).

Любые указатели будут с благодарностью приняты. Я потратил пару дней на это и не думаю, что доберусь никуда.
Спасибо

Решение

Я столкнулся с той же проблемой. Позже я обнаружил, что использую более старую версию файлов Microsoft SQL для PHP.

Для PHP 7.2 вы должны использовать 7.2 версию MS PHP SQL

Эта версия не доступна через веб-сайт Microsoft. Я нашел это здесь https://github.com/Microsoft/msphpsql/releases

Как только я использовал эти файлы, все работает отлично. Я использовал 64-битные файлы.

Затем вам нужно добавить эти строки в файл php.ini

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

pdo_sqlsrv: 5.3.0 + 11108

1. Загрузите правильную версию sqlsrv и sqlsrv pdo

2. поместите его в папку XAMPP PHP ext

3. после этого напишите строку в php.ini> настройки модуля

4.Let сделать тест для MSSQL все еще есть сообщение об ошибке для рекомендовать вам скачать ODBC Driver для SQL

(у меня утилиты командной строки 11 для SQL Server® X86)

6. Снова запустите test.php, все работает!

Что вам нужно определить

  • Какая версия PHP
  • Используемая среда выполнения Поток Сейф или же Без резьбы
  • Используемая среда выполнения 64 бита или же 32 бита
Читайте также:  Прога для смены ip адреса компьютера

Тогда вы должны посмотреть на странице требований Вот

Проверьте версию PHP, которую вы используете, поэтому предпочтите ваш вопрос, это значит PHP 7.2 который SQL Server расширение версии 5.3 лучше всего подходит.

Затем перейдите к страница загрузки , выберите ссылку, которая определена с версией, которую вы предпочитаете. (в этом вопросе 5,3)

Файл, который вы скачали, будет самораспаковывающимся EXE файл, затем распакуйте в место, где вы хотите.

вы увидите список dll файлы, подобные этим …

Какой смысл в названии этих файлов?

Как я уже говорил ранее, что вам нужно определить, чтобы выбрать правильный файл расширения. Расширению SQL Server нужны 2 файла с именем, начинающимися с php_pdo_sqlsrv_xxx а также php_sqlsrv_xxx ,

Следующий номер значит для вашего PHP версия, в этом случае PHP 7.2 , так что вам нужно выбрать имя файла имеет _72_ в своем.

Следующее число означает ваше время выполнения Поток Сейф или же Без резьбы, какой конкретно в имени файла _ts_ (Thread Safe) или _nts_ (Без резьбы).

Следующее число означает ваше время выполнения 32 бита или же 64 бита, какой конкретно в имени файла _x86 (32 бита) или _x64 (64 бита)

Итак, проверьте вашу PHP среду phpinfo() или выполните команду php —version на вашей консоли, а затем обратите внимание на сообщение, для моего компьютера это выглядит так …

Судя по этой информации, я получил PHP 7.2 , ZTS значит Поток Сейф (Без резьбы будет NTS ) и x86 является 32 бита.

Итак, что я должен выбрать это расширение, которые являются php_sqlsrv_72_ts_x86.dll а также php_pdo_sqlsrv_72_ts_x86.dll

Финал: скопируйте их на свой /php/ext папка и редактировать php.ini с этими двумя именами файлов.

Затем сохранить php.ini файл, а затем перезагрузите сервер.

Проверьте свой результат, посмотрев на phpinfo.php который ДОЛЖЕН иметь pdo_sqlsrv на странице. Это означает, что ваша среда может работать с PHP и подключаться к SQL Server сейчас.

Я наконец нашел решение. Все, что вам нужно сделать, это использовать эти расширения в php.ini файл.

php_sqlsrv_72_ts_x86.dll

php_pdo_sqlsrv_72_ts_x86.dll

В этой статье мы расскажем о всех тонкостях подключения к MS SQL серверу, для работы с ним через PHP .

Мы будем рассматривать SQL Server 2014 . На ранних версиях этот процесс может немного отличаться.

Давайте определим, что мы уже имеет установленный пакет SQL Server на каком то VPS или сервере с ОС Windows (Например, заказанного у ihc.ru), либо установленный на вашем локальном компьютере для тестов.

Так же соответственно на сервере стоит PHP версии 5.2+ или у вас установлен локальный сервер, вроде OpenServer .

Читайте также:  M s на летней резине что означает

Теперь нужно скачать и установить PHP driver для SQL Server — вот ссылка на официальный сайт.

На данный момент там есть четыре версии драйвера 2.0, 3.0, 3.1, 3.2. Далее приведена таблица с совместимостью с PHP :

Microsoft Drivers for PHP for SQL Server Version Supported PHP Versions

Так же приведем таблицу поддержки разных версий MS SQL Server :

Microsoft Drivers for PHP for SQL Server Version Supported Windows Server

Windows Server 2008 R2 SP1

Windows Server 2008 SP2

Windows Server 2012

Windows Server 2012 R2

Windows Server 2008 R2 SP1

Windows Server 2008 SP2

Windows Server 2003 Service Pack 1

Windows Server 2008 R2

Windows Server 2008

Мы для проверки выбрали драйвер версии 3.2 для сервера 2014 года. После скачивания распакуйте полученные файлы в какую-нибудь временную папку. Получите примерно такой список файлов:

  • PHP Drivers License Terms.rtf
  • php_pdo_sqlsrv_54_nts.dll
  • php_pdo_sqlsrv_54_ts.dll
  • php_pdo_sqlsrv_55_nts.dll
  • php_pdo_sqlsrv_55_ts.dll
  • php_pdo_sqlsrv_56_nts.dll
  • php_pdo_sqlsrv_56_ts.dll
  • php_sqlsrv_54_nts.dll
  • php_sqlsrv_54_ts.dll
  • php_sqlsrv_55_nts.dll
  • php_sqlsrv_55_ts.dll
  • php_sqlsrv_56_nts.dll
  • php_sqlsrv_56_ts.dll
  • release.txt
  • SQLSRV_Readme.htm
  • SQLSRV_ThirdPartyNotices.rtf

Нас здесь интересуют только библиотеки с форматом dll . Библиотеки с приставкой php_pdo отметаем сразу. Остается список из файлов:

  • php_sqlsrv_54_nts.dll
  • php_sqlsrv_54_ts.dll
  • php_sqlsrv_55_nts.dll
  • php_sqlsrv_55_ts.dll
  • php_sqlsrv_56_nts.dll
  • php_sqlsrv_ 56_ts.dll

Здесь после приставки php_sqlsrv_ идут две цифры, это версия PHP , и следующие символы определяют Thread Safety , режим которого можно посмотреть в информации о вашем PHP , смотрится в phpinfo() . Если в графе стоит enabled , то выбираем версию с приставкой _ts и иначе — _nts .

После того как вы определились с файлом драйвера, который нужен вам, переходим к настройке php.ini . В первую очередь находим там строчку extension_dir = и удостоверяемся, что она не закомментирована, она указывает путь к расширениям, именно по этому пути открываем соответствующую директорию и закидываем туда библиотеку драйвера, в нашем случае это был php_sqlsrv_54_ts.dll , у вас может быть другая версия драйвера.

Теперь добавляем в php.ini строку с подключением драйвера extension=php_sqlsrv_54_ts.dll . Перезапускаем сервер и проверяем phpinfo() . Если всё произошло успешно вы должны обнаружить блок sqlsrv :

Теперь проверяем соединение с БД при помощи следующего шаблона:

Если получаем "Connection established." — радуемся. Если "Connection could not be established." и гору сообщений об ошибках, то перечитываем статью, после этого уже пишем в комментарии.

Мы пробовали всё на локальном компьютере — сервер OpenServer , версия PHP — 5.4.44, MS SQL Server 2014, имя БД — StudyBD .

Напоследок так же ссылка на на описание API драйвера.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.