Conexão ao SQL Server com PHP erro!

SQL Server

PHP

07/06/2016

Segue meu código para conexão.

<?php
try {
    $hostname = "192.168.2.9";
    $dbname = "SISAC";
    $username = "sa";
    $pw = "9jd3n7@@";
    $pdo = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
  } catch (PDOException $e) {
    echo "Erro de Conexão " . $e->getMessage() . "\n";
    exit;
  }
      $query = $pdo->prepare("select Coluna FROM nome_tabela");
      $query->execute();
 
      for($i=0; $row = $query->fetch(); $i++){
        echo $i." - ".$row['Coluna']."<br/>";
      }
 
      unset($pdo); 
      unset($query);
?>


Bom, estou tentando fazer uma conexão com meu banco de dados SQL SERVER 2012 mas não estou conseguindo, sempre recebo o seguinte erro.
Erro de Conexão could not find driver

Alguém sabe que erro é esse?
Cleyton Caetano

Cleyton Caetano

Curtidas 0

Respostas

William

William

07/06/2016

Senão me falha a memória, não existe dsn para SQL Server usando PDO com "mssql"!!

Nesse post escrevi sobre os principais dsn do PDO para diversos banco de dados http://www.devwilliam.com.br/php/dsn-pdo-diversos-bancos-de-dados

Tem que baixar e habilitar a extensão pdo_sqlsrv.dll, nesse link tem mais informações sobre o download https://www.microsoft.com/en-us/download/details.aspx?id=20098
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Os links de download da microsoft estão dando erro!
GOSTEI 0
William

William

07/06/2016

Cara eu fiz o download de uma das versões tranquilamente nesse link!
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Cara eu fiz o download de uma das versões tranquilamente nesse link!

Vou tentar novamente, após fazer a instalação basta tentar refazer a conexão?
GOSTEI 0
William

William

07/06/2016

Garantir que vai funcionar fica complicado, nesse post que respondi para outro usuário, relatei um pouco da minha "saga" para acessar SQL Server com PHP no Windows com IIS.
GOSTEI 0
Wellington Silva

Wellington Silva

07/06/2016

Caso tenha instalado o drive de modo correto, e o php rodar a extensão, você só vai precisar corrigir seu DSN:
$pdo = new PDO("sqlsrv:server=hostname; database=nome_banco;", USUARIO, SENHA);
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Bom, eu instalei o drive e reiniciei o servidor.

meu script PHP agora está assim!

<?php
try {

    define('USUARIO', 'sa');
    define('SENHA', '9jd3n7@@');
        
    $pdo = new PDO("sqlsrv:server=192.168.2.9; database=SISAC;", USUARIO, SENHA);
  } catch (PDOException $e) {
    echo "Erro de Conexão: " . $e->getMessage() . "\n";
    exit;
  }
      $query = $pdo->prepare("select Coluna FROM nome_tabela");
      $query->execute();
 
      for($i=0; $row = $query->fetch(); $i++){
        echo $i." - ".$row['Coluna']."<br/>";
      }
 
      unset($pdo); 
      unset($query);
?>


e continuar dando Erro de Conexão: could not find driver
GOSTEI 0
William

William

07/06/2016

Verificou se a extensão foi habilitada corretamente?

Chamando o phpinfo() você consegue ver isso.
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

deverá aparecer mssql ou pdo_sqlsrv.dll?
GOSTEI 0
William

William

07/06/2016

pdo_sqlsrv.dll
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

pdo_sqlsrv.dll


Blz, amanhã vou dar uma olhada e posto aqui o resultado!
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Bom, depois de testar tudo que pensei não consegui, fica aparecendo isso no phpinfo().

cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--without-analyzer" "--with-pgo"
GOSTEI 0
Wellington Silva

Wellington Silva

07/06/2016

Você deve ter instalado a extensão errada.. eu acabei de instalar aqui, no meu caso o PHP é Thread Safe, e funcionou beleza..
para verificar se a extensão instalada com sucesso, execute:

<?php

var_dump(extension_loaded('pdo_sqlsrv'));


se retornar true, deu certo, caso contrario está instalado errado.

não se esqueceu de adicionar no php.ini:
PHP TS
extension=php_pdo_sqlsrv_56_ts.dll
PHP NTS
extension=php_pdo_sqlsrv_56_nts.dll
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Você deve ter instalado a extensão errada.. eu acabei de instalar aqui, no meu caso o PHP é Thread Safe, e funcionou beleza..
para verificar se a extensão instalada com sucesso, execute:

<?php

var_dump(extension_loaded('pdo_sqlsrv'));


se retornar true, deu certo, caso contrario está instalado errado.

não se esqueceu de adicionar no php.ini:
PHP TS
extension=php_pdo_sqlsrv_56_ts.dll
PHP NTS
extension=php_pdo_sqlsrv_56_nts.dll

Blz, vou tentar novamente pra ver
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Um detalhe, o PC que estou usando é não é o mesmo onde o SQL Server está instalado, mas é na mesma rede, será se tem alguma coisa haver?
GOSTEI 0
Wellington Silva

Wellington Silva

07/06/2016

Não, se o erro que estiver retornando for esse que vc postou: could not find driver.

Agora se for erro de falha na conexão, ai sim pode ser um firewall algo do tipo..
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Não, se o erro que estiver retornando for esse que vc postou: could not find driver.

Agora se for erro de falha na conexão, ai sim pode ser um firewall algo do tipo..

Blz, qualquer progresso retorno aqui pra vocês!
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Você deve ter instalado a extensão errada.. eu acabei de instalar aqui, no meu caso o PHP é Thread Safe, e funcionou beleza..
para verificar se a extensão instalada com sucesso, execute:

<?php

var_dump(extension_loaded('pdo_sqlsrv'));


se retornar true, deu certo, caso contrario está instalado errado.

não se esqueceu de adicionar no php.ini:
PHP TS
extension=php_pdo_sqlsrv_56_ts.dll
PHP NTS
extension=php_pdo_sqlsrv_56_nts.dll


Deu false, e coloquei os parâmetros no PHP.INI mas num resolveu.
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Você deve ter instalado a extensão errada.. eu acabei de instalar aqui, no meu caso o PHP é Thread Safe, e funcionou beleza..
para verificar se a extensão instalada com sucesso, execute:

<?php

var_dump(extension_loaded('pdo_sqlsrv'));


se retornar true, deu certo, caso contrario está instalado errado.

não se esqueceu de adicionar no php.ini:
PHP TS
extension=php_pdo_sqlsrv_56_ts.dll
PHP NTS
extension=php_pdo_sqlsrv_56_nts.dll


Bom, depois de amanhar muito me foi retornado true, mas agora quando tento fazer a conexão me retorna esse erro!

Erro de Conexão SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver 11 for SQL Server for x86: http://go.microsoft.com/fwlink/?LinkId=163712
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Minha versão é PHP Version 5.6.19, a Versão dos Drivers da Microsoft para PHP para SQL Server que instalei foi a 3.2 que como eles informam apenas essa tem suporte para PHP 5.6.4+.

No phpinfo aparece
pdo_sqlsrv

pdo_sqlsrv support	enabled




Mesmo assim o link leva para a página de download novamente!
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Bom, baixei o arquivo do drive neste [url:descricao=Microsoft® ODBC Driver 11 para SQL Server® - Windows
]https://www.microsoft.com/pt-br/download/details.aspx?id=36434[/url] e parece que conectou, vou criar uns códigos e ver se consigo sucesso mesmo e posto aqui, obrigada pessoal pela ajuda!
GOSTEI 0
Cleyton Caetano

Cleyton Caetano

07/06/2016

Pessoal, consegui recuperar os dados sim sem problemas, agora minha aplicação está se comunicando perfeitamente com o SQL Server, obrigada a todos pela ajuda!
GOSTEI 0
POSTAR