SQL Server — подключение PHP 7,2 к MS SQL с помощью sqlsrv

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

session_start();

echo "Hello ";
if (isset($_POST['submit'])) {
$_SESSION["server"] = $_POST['server'];
$_SESSION["database"]= $_POST['database'];
$_SESSION["username"] = $_POST['username'];
$_SESSION["password"] = $_POST['password'];

echo $_SESSION["database"];

//CONNECTION
$serverName = $_SESSION["server"];
$connectionInfo["Database"] = $_SESSION["database"];
$connectionInfo["UID"] = $_SESSION["username"];
$connectionInfo["PWD"] = $_SESSION["password"];

echo "midway";

$conn = sqlsrv_connect($serverName, $connectionInfo);

echo "Bye";
}

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

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

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

4

Решение

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

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

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

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

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

расширение = php_sqlsrv_72_nts.dll

расширение = php_pdo_sqlsrv_72_nts.dll

9

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

Я решил это ~
Версия PHP 7.2.4

pdo_sqlsrv: 5.3.0 + 11108

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

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

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

расширение = php_pdo_sqlsrv_72_ts.dll

расширение = php_sqlsrv_72_ts.dll

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

5. Перейти к https://docs.microsoft.com/zh-tw/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017 затем загрузите нужный файл

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

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

2

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

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

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

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

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

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

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

php_pdo_sqlsrv_7_nts_x64.dll
php_pdo_sqlsrv_7_nts_x86.dll
php_pdo_sqlsrv_7_ts_x64.dll
php_pdo_sqlsrv_7_ts_x86.dll
...
php_sqlsrv_72_ts_x86.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.12 (cli) (built: Nov  8 2018 06:12:12) ( ZTS MSVC15 (Visual C++ 2017) x86 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

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

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

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

// example with my case
extension=php_pdo_sqlsrv_72_ts_x86
extension=php_sqlsrv_72_ts_x86

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

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

2

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

php_sqlsrv_72_ts_x86.dll

php_pdo_sqlsrv_72_ts_x86.dll

и перезапустите свой XAMPP.

Постскриптум «Я использую PHP 7.2.5»

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