Conexão ao SQL Server com PHP erro!

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

Respostas

07/06/2016

William (devwilliam)

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
Responder Citar

08/06/2016

Cleyton Caetano

Os links de download da microsoft estão dando erro!
Responder Citar

09/06/2016

William (devwilliam)

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

09/06/2016

Cleyton Caetano

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?
Responder Citar

09/06/2016

William (devwilliam)

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.
Responder Citar

09/06/2016

Wellington Silva

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);
Responder Citar

09/06/2016

Cleyton Caetano

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
Responder Citar

09/06/2016

William (devwilliam)

Verificou se a extensão foi habilitada corretamente?

Chamando o phpinfo() você consegue ver isso.
Responder Citar

09/06/2016

Cleyton Caetano

deverá aparecer mssql ou pdo_sqlsrv.dll?
Responder Citar

09/06/2016

William (devwilliam)

pdo_sqlsrv.dll
Responder Citar

09/06/2016

Cleyton Caetano

pdo_sqlsrv.dll


Blz, amanhã vou dar uma olhada e posto aqui o resultado!
Responder Citar

10/06/2016

Cleyton Caetano

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"
Responder Citar

10/06/2016

Wellington Silva

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
Responder Citar

12/06/2016

Cleyton Caetano

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
Responder Citar

12/06/2016

Cleyton Caetano

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?
Responder Citar