Conexão ao SQL Server com PHP erro!

07/06/2016

0

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

Responder

Posts

07/06/2016

William

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

08/06/2016

Cleyton Caetano

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

09/06/2016

William

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

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

09/06/2016

William

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

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

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

09/06/2016

William

Verificou se a extensão foi habilitada corretamente?

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

09/06/2016

Cleyton Caetano

deverá aparecer mssql ou pdo_sqlsrv.dll?
Responder

09/06/2016

William

pdo_sqlsrv.dll
Responder

09/06/2016

Cleyton Caetano

pdo_sqlsrv.dll


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

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

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

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

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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar