Array
(
)

Conexão ao SQL Server com PHP erro!

Cleyton Caetano
   - 07 jun 2016

Segue meu código para conexão.
#Código

<?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.
Citação:
Erro de Conexão could not find driver

Alguém sabe que erro é esse?

William (devwilliam)
   - 07 jun 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

Cleyton Caetano
   - 08 jun 2016

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

William (devwilliam)
   - 09 jun 2016

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

Cleyton Caetano
   - 09 jun 2016


Citação:
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?

William (devwilliam)
   - 09 jun 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.

Wellington Silva
   - 09 jun 2016

Caso tenha instalado o drive de modo correto, e o php rodar a extensão, você só vai precisar corrigir seu DSN:
#Código

$pdo = new PDO("sqlsrv:server=hostname; database=nome_banco;", USUARIO, SENHA);

Cleyton Caetano
   - 09 jun 2016

Bom, eu instalei o drive e reiniciei o servidor.

meu script PHP agora está assim!

#Código

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

William (devwilliam)
   - 09 jun 2016

Verificou se a extensão foi habilitada corretamente?

Chamando o phpinfo() você consegue ver isso.

Cleyton Caetano
   - 09 jun 2016

deverá aparecer mssql ou pdo_sqlsrv.dll?

William (devwilliam)
   - 09 jun 2016

pdo_sqlsrv.dll

Cleyton Caetano
   - 09 jun 2016


Citação:
pdo_sqlsrv.dll


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

Cleyton Caetano
   - 10 jun 2016

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

#Código

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"

Wellington Silva
   - 10 jun 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:

#Código

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

Cleyton Caetano
   - 12 jun 2016


Citação:
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:

#Código

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

Cleyton Caetano
   - 12 jun 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?

Wellington Silva
   - 13 jun 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..

Cleyton Caetano
   - 13 jun 2016


Citação:
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!

Cleyton Caetano
   - 13 jun 2016


Citação:
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:

#Código

<?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.

Cleyton Caetano
   - 15 jun 2016


Citação:
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:

#Código

<?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!

#Código
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

Cleyton Caetano
   - 15 jun 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
#Código

pdo_sqlsrv

pdo_sqlsrv support	enabled




Mesmo assim o link leva para a página de download novamente!