Php подключение к ms sql
Как подключиться к Microsoft SQL Server через PHP
В этой статье мы расскажем о всех тонкостях подключения к MS SQL серверу, для работы с ним через PHP .
Мы будем рассматривать SQL Server 2014 . На ранних версиях этот процесс может немного отличаться.
Давайте определим, что мы уже имеет установленный пакет SQL Server на каком то VPS или сервере с ОС Windows (Например, заказанного у ihc.ru), либо установленный на вашем локальном компьютере для тестов.
Так же соответственно на сервере стоит PHP версии 5.2+ или у вас установлен локальный сервер, вроде OpenServer .
Теперь нужно скачать и установить PHP driver для SQL Server — вот ссылка на официальный сайт.
На данный момент там есть четыре версии драйвера 2.0, 3.0, 3.1, 3.2. Далее приведена таблица с совместимостью с PHP :
Microsoft Drivers for PHP for SQL Server Version | Supported PHP Versions | ||||
---|---|---|---|---|---|
Microsoft Drivers for PHP for SQL Server Version | Supported Windows Server | ||
---|---|---|---|
Версия | Описание |
---|---|
5.1.0 | Добавлен параметр new_link |
Примеры
Пример #1 Пример использования mssql_connect()
при использовании нестандартного порта
$server = ‘KALLESPCSQLEXPRESS’ ;
// Подключение к MSSQL
$link = mssql_connect ( $server , ‘sa’ , ‘phpfi’ );
if (! $link ) <
die( ‘Something went wrong while connecting to MSSQL’ );
>
?>
Смотрите также
- mssql_close() — Закрывает соединение с MS SQL Server
- mssql_pconnect() — Открывает постоянное соединение с MS SQL
User Contributed Notes 40 notes
If someone encounters the interesting problem in which PHP can connect to a MSSQL server from the command line but not when running as an Apache module: SELinux prevents Apache (and therefore all Apache modules) from making remote connections by default.
This solved the problem in CentOS:
# setsebool -P httpd_can_network_connect=1
If you use PHP on Windows with Apache as a web server, you may get problems with authentication to MS SQL Server even when you supply all valid credentials.
Check your php.ini file:
; Use NT authentication when connecting to the server
mssql.secure_connection = On
If you have secure_connection = On, make sure that you provide valid credentials in the properties for Apache service in the System Services box. Then you should not send DB username and password from your script to MSSQL Server.
If you want to use specific credentials from a PHP script, then set mssql.secure_connection = Off in your php.ini
Cent OS — Remote SQL server connection
$link = mssql_connect(72.xx.xxx.xxx, username, password);
If you are not getting success, please check
There is certainly a php-mssql package available in the extras repository so just a `yum install php-mssql` should sort that out — it pulls in freetds as a dependency too. If you already have those installed but it doesn’t seem to be connecting, the one possibility is that you are being blocked by SELinux. To check that run
# getsebool -a | grep httpd_can_network_connect
httpd_can_network_connect —> on
httpd_can_network_connect_db —> on
and to enable them if they are not on, do
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_network_connect_db 1
The following method: serverinstance
does’nt work on unix systems.
An instance is nothing more than specific port address different than 1433. so just discover the port on mssql server and then try to connect using:
In unix the port is specified by : not by ,
For anyone who have to connect to crappy SQL SERVER with \computer_nameinstance_name and failed to connect. There are couple of thing you need do.
1). There’s no needs to install SQL client software in your app server. This would keep your server clean.
2). run cliconfg.exe setup alias in case you needed
3). last and most important, do NOT use ntwdblib.dll came with PHP 4.4.x. It’s not most current. The version I’m using is: 8.00.194 with 274,489 Bytes. And make sure you put this file in your system32 folder.
For those trying to connect PHP 5.2 to a 2005 Microsoft SQL Server Analysis Services (SSAS) cube and execute MDX queries, you have to establish a link via a trusted connection from the Database Service to SSAS using a stored procedure, then execute the stored procedure via PHP.
Here is an example stored procedure that retrieves records from the Adventure Works sample cube that ships with SSAS.
From SQL Server Query Analyzer, you could test it as:
From PHP, you would execute something like the following:
$resultset = mssql_query(«exec testMDX»,$res_id);
then loop thorugh the result set.
— STORED PROCEDURE BEGIN
set ANSI_NULLS ON — Must be enabled at time Stored Proc is created
set QUOTED_IDENTIFIER ON — Must be enabled at time Stored Proc is created
GO
Create Procedure [dbo].[testMDX]
as
BEGIN
SET ANSI_WARNINGS ON: — Must be enabled
SET ANSI_NULLS ON; — Must be enabled
Declare
@SQL varchar(1200), — Variable to hold SQL query
@MDX varchar (1000), — Variable to hold MDX query
;
— Establish a link to Analysis Server
exec sp_addlinkedserver
@server=’linked_olap’, — Alias used to reference the link
@srvproduct=», — Not used
@prov , — OLAP driver
@datasrc=’servername’, — Database server name
@catalog=’Adventure Works DW Standard Edition’ — Database name
;
— Analysis Server requires a TRUSTED connection
exec sp_addlinkedsrvlogin
@rmtsrvname = ‘linked_olap’, — Alias used to reference the link
@useself = ‘false’, — Use own credentials
@locallogin = NULL, — Apply to all local logins
@rmtuser = ‘domainusername’, — Remote user name
@rmtpassword = ‘xyz123’ — Remote user password
;
— Create a temporary table that will be used to hold the MDX output
create table #temp_table (column1 text null, column2 text null);
— Setup a string to hold the MDX so that the precompiler does not try to validate the syntax
SET @MDX = ‘SELECT [Product].[Category].members ON ROWS,
FROM [Adventure Works] ‘ ;
— Setup a string to insert the MDX results into the temporary table
SET @SQL = ‘Insert into #temp_table SELECT * FROM OpenQuery(linked_olap,»’+@MDX+»’)’;
— Execute the SQL and remote MDX query
EXEC (@SQL) ;
— Select the results from the temporary table to return to the calling program
Select column1, column2 from #temp_table ;
— Drop the temporary table
drop table #temp_table;
— Release the TRUSTED connection
exec sp_droplinkedsrvlogin ‘linked_olap’, NULL ;
— Release the link to the Analysis Server
exec sp_dropserver ‘linked_olap’ ;
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.
Я добавил в 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 бита
Тогда вы должны посмотреть на странице требований Вот
Проверьте версию 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
Adblockdetector