IT Новости
10 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд

Sqlsrv connect php 7


(No version information available, might only be in Git)

sqlsrv_connect — Opens a connection to a Microsoft SQL Server database


Opens a connection to a Microsoft SQL Server database. By default, the connection is attempted using Windows Authentication. To connect using SQL Server Authentication, include «UID» and «PWD» in the connection options array.

Список параметров

The name of the server to which a connection is established. To connect to a specific instance, follow the server name with a backward slash and the instance name (e.g. serverNamesqlexpress).

An associative array that specifies options for connecting to the server. If values for the UID and PWD keys are not specified, the connection will be attempted using Windows Authentication. For a complete list of supported keys, see » SQLSRV Connection Options.

Возвращаемые значения

A connection resource. If a connection cannot be successfully opened, FALSE is returned.


Пример #1 Connect using Windows Authentication.

// Since UID and PWD are not specified in the $connectionInfo array,
// The connection will be attempted using Windows Authentication.
$connectionInfo = array( «Database» => «dbName» );
$conn = sqlsrv_connect ( $serverName , $connectionInfo );

if( $conn ) <
echo «Connection established.
» ;
>else <
echo «Connection could not be established.
» ;
die( print_r ( sqlsrv_errors (), true ));

Пример #2 Connect by specifying a user name and password.

= «serverName\sqlexpress» ; //serverNameinstanceName
$connectionInfo = array( «Database» => «dbName» , «UID» => «userName» , «PWD» => «password» );
$conn = sqlsrv_connect ( $serverName , $connectionInfo );

if( $conn ) <
echo «Connection established.
» ;
>else <
echo «Connection could not be established.
» ;
die( print_r ( sqlsrv_errors (), true ));

Пример #3 Connect on a specified port.

= «serverName\sqlexpress, 1542» ; //serverNameinstanceName, portNumber (default is 1433)
$connectionInfo = array( «Database» => «dbName» , «UID» => «userName» , «PWD» => «password» );
$conn = sqlsrv_connect ( $serverName , $connectionInfo );

if( $conn ) <
echo «Connection established.
» ;
>else <
echo «Connection could not be established.
» ;
die( print_r ( sqlsrv_errors (), true ));


By default, the sqlsrv_connect() uses connection pooling to improve connection performance. To turn off connection pooling (i.e. force a new connection on each call), set the «ConnectionPooling» option in the $connectionOptions array to 0 (or FALSE ). For more information, see » SQLSRV Connection Pooling.

The SQLSRV extension does not have a dedicated function for changing which database is connected to. The target database is specified in the $connectionOptions array that is passed to sqlsrv_connect. To change the database on an open connection, execute the following query «USE dbName» (e.g. sqlsrv_query($conn, «USE dbName»)).

Смотрите также

  • sqlsrv_close() — Closes an open connection and releases resourses associated with the connection
  • sqlsrv_errors() — Returns error and warning information about the last SQLSRV operation performed
  • sqlsrv_query() — Prepares and executes a query

Connecting php 7.2 to MS SQL using sqlsrv

I’m trying to get a connection to MS SQL up and running via PHP on my machine. I’m running IIS, have PHP 7.2 installed and MS SQL Express 2017. I have my basic web page running but when I click to open the PHP page, the connection does not work.

When I run this I get «Hello dimensions midway» which suggests the page is working until it hits the connection line.
I am not sure what sqlsrv extension to use.
I have looked around and can see versions for 7 and 7.1 but not for 7.2.

Читать еще:  Код ошибки 0 play market

I have added in extension=php_sqlsrv_71_nts_x86.dll to the bottom of php.ini (and the file exists in C:Program Files (x86)PHPv7.2ext ).

Any pointers would be gratefully received. I’ve spent a couple of days on this and don’t think I’m getting anywhere.

5 Answers 5

I faced the same issue. Later I found that I was using older version of Microsoft SQL files for PHP.

For PHP 7.2 you have to use 7.2 version of MS PHP SQL

That version is not available through microsoft website. I found it here

Once I used those files everything works fine. I used 64 bit files.

Then you need to add these lines in the php.ini file

What do you need to determine are

  • Which version of PHP
  • The runtime you are using is Thread Safe or Non-Thread Safe
  • The runtime you are using is 64 bits or 32 bits

Then you must look at the requirement page here

Check the version of PHP you are using, so prefer to your question, it’s mean to PHP 7.2 which SQL Server extension version 5.3 is the best fit.

Then go to download page, select the link which specific with version you prefer. (in this question is 5.3)

The file you downloaded will be a self-extractable EXE file, then extract to the place where you want.

you will see list of dll files like these.

What is the meaning that is in the name of these files?

Like I said before, what you need to determine to select the proper extension file. The SQL Server extension need 2 files of the name start with php_pdo_sqlsrv_xxx and php_sqlsrv_xxx .

Next number mean to your PHP version, in this case PHP 7.2 , so you need to choose file name has _72_ in its.

Next number mean to your runtime Thread Safe or Non-Thread Safe, which specific in the file name _ts_ (Thread Safe) or _nts_ (Non-Thread Safe).

Next number mean to your runtime 32 bits or 64 bits, which specific in the file name _x86 (32 bits) or _x64 (64 bits)

So check your PHP environment by phpinfo() , or run the command php —version on your console, and then notice the message displayed, for my computer it look like these.

By look from those information, I got PHP 7.2 , ZTS mean to Thread Safe (Non-Thread Safe will be NTS ), and the x86 is 32 bits.

So, what I must pick is the extension which are php_sqlsrv_72_ts_x86.dll and php_pdo_sqlsrv_72_ts_x86.dll

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

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

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

Читать еще:  Php подключение к mssql

Я добавил в 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. Я нашел это здесь

Как только я использовал эти файлы, все работает отлично. Я использовал 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 бита

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

Проверьте версию 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 сейчас.

Читать еще:  Df dferh 01 ошибка при получении

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



Как подключиться к серверу sql с помощью PHP7? (Что мне не хватает?)

Здесь вывод phpinfo: version.php

Ничего не записывается в файл журнала. Даже если я жестко кодирую текст в файле fwrite ($ myfile3, «жестко закодированный текст» ); место, ничего не выписывается.

Здесь раздел расширения в файле php.ini

Наконец, я знаю, что мне не нужны все эти, но это 4 библиотеки DLL, которые есть в папке ext.

Использование pdo:

Процедурный способ:

Нажмите здесь для дополнительной информации

Сначала вам нужно изолировать вашу проблему — это что-то не так с вашей записью файла или что-то не так с подключением к SQL-серверу или что-то не так с вашей настройкой PHP?

Устранение неполадок SQL Server

Вы можете использовать флаг SQLSRV_ERR_ALL при вызове sqlsrv_errors() как можно более подробно, и использовать результат die() или просто print_r / echo на экране (вместо того, чтобы писать в файл), чтобы вы могли увидеть там что-то не так — посмотрите примеры на странице документации sqlsrv_connect .

Далее я попытаюсь убедиться, что вы правильно указываете порт, например:

$serverName = ‘X.X.X.X, 1433’;

Или укажите экземпляр SQL Server, например:

Также убедитесь, что ваш пользователь, пароль и имя базы данных верны, и что пользователь, которого вы указали, имеет соответствующие разрешения для этой базы данных. И, конечно, он работает на порту 1433 (или измените приведенное выше на любой порт, на котором он запущен).

После этого я хотел бы добавить эти свойства до вашего вызова sqlsrv_connect() , чтобы как можно больше повысить насколько это возможно, для устранения ошибок при подключении:

Посмотрите, что это делает что-то более полезное с SQL-сервера напрямую.

Устранение неполадок при записи файлов

  • вам нужно взглянуть на fopen — вы можете использовать a режим вместо w , чтобы убедиться, что файл не усечен при его открытии
  • Вы также должны проверить, соответствует ли возвращенный $myfile3 false документации, если файл само открытое не работает.
    • Если это так, тогда у вас может возникнуть проблема с разрешениями в каталоге, который вы пытаетесь создать файл. Если файл уже создан за вас заранее (не нужно беспокоиться о его создании), у вас также могут быть права на запись в этот файл. Если open не работает, он должен создать E_WARNING (который должен отображаться на странице, так как ваша настройка error_reporting установлена ​​на E_ALL , но вы также можете проверить файл журнала ошибок PHP). Вы также можете использовать file_exists и is_readable() , чтобы проверить разрешения.
    • Когда вы говорите жесткое кодирование, значение записи не выполняет никаких записей, это заставляет меня думать, что это настоящая проблема.
  • Я бы также рассмотрел использование разных файлов журналов для каждой части (не log.txt в обоих случаях)

Устранение неполадок PHP

Взгляните на документацию Microsoft, чтобы убедиться, что ваши DLL соответствуют правильной DLL-версии PHP7, которую вы используете в своей версии Windows, хотя это не указывает требования к операционной системе для v4.0 драйвера: они могут не поддерживать Windows Server 2008, хотя я был бы удивлен. Они также не показывают, к каким версиям SQL-сервера они поддерживают подключение, поэтому, если вы используете старую версию SQL-сервера, это может быть проблемой.

Ссылка на основную публикацию