Conexão PHP com SQL Server (2012)

SQL Server

PHP

03/07/2018

Bom dia, alguém poderia me ajudar ?
Trabalho numa empresa de grande porte e estou com um problemão.
Tenho uma aplicação em PHP que já é estruturada, se conecta a um banco Mysql, sem problema nenhum, através de um arquivo config.php que fiz.
Agora tem uma conexão que preciso fazer para outra parte que preciso me conectar a um banco que está em um SQL Server 2012. Porém já tentei de tudo para me conectar ao banco e não consigo.
Vi vários artigos para se conectar com odbc, sqlsrv, pdo, mas nada me ajudou.
Vi também que preciso copiar extensões para o servidor bem como inserir as linhas das extensões no php.ini.
Alguém já passou por isso e poderia me auxiliar ?
Esse php.ini é o servidor da minha aplicação (Onde subo os arquivos FTP) ? ou o servidor do sql server ?
Obrigado
Eduardo Piassi

Eduardo Piassi

Curtidas 0

Melhor post

Filon Segundo

Filon Segundo

04/07/2018

Opa,
Ja fiz algo relacionado a isso, onde eu precisava conectar a um banco MSSQL.
no meu caso, eu fiz usando PDO.
primeiro, baixa o driver de conexão no site da microsoft
depois, copie a dll para a pasta ext da instalação do php.
depois habilita a extenção no php.ini
extension=php_pdo_sqlsrv.dll ( nome do arquivo que você copiou pra pasta ext)


depois, verifica no phpinfo se aparece enabled no pdo_sqlsrv

pronto, o servidor ja está configurado, agora, basta usar a conexão


para usar na aplicação, segue o exemplo:

    
    define('DB_HOST'        , "#ipdoservidor");
    define('DB_USER'        , "#usuariodoservidor");
    define('DB_PASSWORD'    , "#senhadoservidor");
    define('DB_NAME'        , "#nomedobanco");
    define('DB_DRIVER'      , "sqlsrv"); //deixa o driver como está, pois já está definido para sqlsrv
    
  $cfg  = DB_DRIVER . ":". "Server=" . DB_HOST . ";";
  $cfg .= "Database=".DB_NAME.";";

 $conn =  new PDO($cfg, DB_USER, DB_PASSWORD);    //não alterar
  $conn ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //não alterar

//daqui pra baixo é exemplo de query
$query = $conn ->query("SELECT nome from usuarios");
$usuarios = $query->fetchAll();
GOSTEI 1

Mais Respostas

Eduardo Piassi

Eduardo Piassi

03/07/2018

Complementando, achei na versão do php que uso, isso:

odbc
ODBC Support enabled
Active Persistent Links 0
Active Links 0
ODBC library Win32

Directive Local Value Master Value
odbc.allow_persistent On On
odbc.check_persistent On On
odbc.default_cursortype Static cursor Static cursor
odbc.default_db no value no value
odbc.default_pw no value no value
odbc.default_user no value no value
odbc.defaultbinmode return as is return as is
odbc.defaultlrl return up to 4096 bytes return up to 4096 bytes
odbc.max_links Unlimited Unlimited
odbc.max_persistent Unlimited Unlimited

GOSTEI 0
Filon Segundo

Filon Segundo

03/07/2018

se o servidor em que o php está rodando é linux, você téra que usar dblib ao invez de sqlsrv como driver,
da uma olhada aqui
http://php.net/manual/en/ref.pdo-dblib.php
GOSTEI 1
Eduardo Piassi

Eduardo Piassi

03/07/2018

Opa, valeu Filon, vou tentar. Estou esperando o pessoal instalar as extensões no cpd para eu testar, ja que não me deixam ter o acesso direto no servidor. Assim que eles fizerem essas alterações te dou um alô. Valeu
GOSTEI 0
Eduardo Piassi

Eduardo Piassi

03/07/2018

Não, o servidor é windows mesmo. valeu
GOSTEI 0
Eduardo Piassi

Eduardo Piassi

03/07/2018

Filon, bom dia. Não querendo abusar. A versão do meu php é 5.2, sabe qual seria o arquivo SQLSRV que preciso baixar, tem vários aqui no site para download, SQLSRV30, SQLSRV31, SQLSRV32, SQLSRV40, SQLSRV52.
Obrigado
GOSTEI 0
Filon Segundo

Filon Segundo

03/07/2018

isso depende da versão do sql server que está usando e se seu php é thread safe ou não.
primeiro, verifique no phpinfo se threadsafe é true ou false.

depois disso, baixe o relativo a sua versão


Versão 4.0 suporta PHP 7.0+
Versão 3.2 suporta PHP 5.6, 5.5, e 5.4
Versão 3.1 suporta PHP 5.5 e 5.4
Versão 3.0 suporta PHP 5.4


pessoalmente , recomendaria você a atualizar o php do seu servidor para no minimo o 5.6, mas caso não seja possivel creio que a versão 3.0 funcionará.
baixando o arquivo SQLSRV30, dentro dele terá duas dlls uma com final ts, e outra com nts ou sem o final ts.
se seu php for threadsafe use a versão com ts no final, caso contrário, use a outra versão
GOSTEI 0
Eduardo Piassi

Eduardo Piassi

03/07/2018

Mais uma vez, obrigado pela prestação e disposição de me ajudar.

Quanto a atualizar, eu nao tenho acesso para isso, pois o servidor fica no CPD da empresa e tenho que ficar abrindo chamado para os analistas atenderem com as alterações e eles não vão atualizar.

Vou mandar o final 30 então para eles subirem a extensão e pedir para incluirem as linhas no php.ini

Valeu, abraço
GOSTEI 0
POSTAR