Conectando no SQL Server utilizando PDO em PHP

Neste conteúdo você aprenderá a conectar no Banco de Dados SQL Server utilizando PDO em PHP. PDO é uma classe desenvolvida especificamente para trabalhar com procedimentos relacionados a BDs.

#PraCegoVer - Transcrição dos Slides SQL Server e PHP se comunicam por meio do PHP Data Objects (PDO)
Vamos baixar o driver no site da Microsoft - c:\xampp\php\ext
Está na hora de configurar o php.ini e adicionar os drivers: extension=php_pdo_sqlsrv_7_ts_x86.dll e extension=php_sqlsrv_7_ts_x86.dll
Agora é só reiniciar o XAMPP apertando stop r start a seguir, dentro do programa Control Panel
Está tudo pronto e você já pode utilizar o PDO. A string de conexão é sqlsrv:Server=localhost;Database=teste;
$connection = new PDO(< string >, "usuário", "Senha");
Ir para o código

PDO (PHP Data Objects)

Neste conteúdo você aprenderá a configurar o driver de conexão com o Banco de Dados SQL Server da Microsoft e criar uma conexão com esse BD utilizando o PDO (PHP Data Objects) e a linguagem PHP.

Para entender como funciona uma conexão utilizando o PDO, observe a Figura 1:

Figura 1. Conexão utilizando PDO

A extensão PDO define uma interface leve e consistente para acessar bancos de dados em PHP. Cada driver de banco de dados que a implementa pode utilizar os métodos para comunicação com o Banco de Dados. Observe que não é possível executar nenhuma função de banco de dados usando a extensão PDO por si só: você deve usar um driver PDO específico do banco de dados para acessar um servidor.

O PDO fornece uma camada de abstração de acesso a dados, o que significa que, independentemente do banco de dados que você está usando, as funções para emitir consultas e buscar dados são as mesmas. O PDO não fornece uma abstração de banco de dados, ou seja, ele não reescreve o SQL ou simula recursos faltantes. Você deve usar uma camada de abstração completa se precisar dessa facilidade.

Veja na Figura 2 os drivers implementados no PDO.

Figura 2. Drivers suportados pelo PDO conforme a documentação do PHP no site php.net

Agora vamos efetuar o download do driver do SQLServer para PHP no site da Microsoft.

Após efetuar o download, descompacte os arquivos e os copie para o diretório ext, conforme mostra a Figura 3. Como estamos usando o XAMPP, esse arquivo fica localizado em c:\xampp\php.

Figura 3. Copiando os arquivos para diretório c:\xampp\php\ext

Em seguida, edite o arquivo c:\xampp\php\php.ini inserindo o código abaixo para configurar o driver de conexão com o Banco de Dados:

Versão x86

extension=php_pdo_sqlsrv_73_ts_x86.dll extension=php_sqlsrv_73_ts_x86.dll

Versão x64

extension=php_pdo_sqlsrv_73_ts_x64.dll extension=php_sqlsrv_73_ts_x64.dll
Nota: É necessário uma atenção especial ao inserir os drivers, verificando a versão do PHP e se a instalação é do tipo x86 ou x64. Pois php_pdo_sqlsrv_73_ts_x86.dll o '73' deste arquivo refere se a versão do PHP. Então mediante a versão utilizada ele deverá ser inserido corretamente.

A inserção deve ser feita conforme a Figura 4.

Figura 4. Adicionando as linhas dos drivers SQL Server

Após efetuar esta configuração você vai reiniciar o seu servidor web (XAMPP) conforme a Figura 5:

Figura 5. Reiniciando o servidor web (XAMPP).

Para efetuar a conexão com o Banco de Dados SQL Server usaremos o seguinte código.

<?php class Conexao { private static $connection; private function __construct(){} public static function getConnection() { $pdoConfig = DB_DRIVER . ":". "Server=" . DB_HOST . ";"; $pdoConfig .= "Database=".DB_NAME.";"; try { if(!isset($connection)){ $connection = new PDO($pdoConfig, DB_USER, DB_PASSWORD); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } return $connection; } catch (PDOException $e) { $mensagem = "Drivers disponiveis: " . implode(",", PDO::getAvailableDrivers()); $mensagem .= "\nErro: " . $e->getMessage(); throw new Exception($mensagem); } } }

Linhas 11 e 12: Aqui temos a string de conexão com BD. No SQL Server é necessário utilizar os parâmetros Server e Database.

Linhas 14 a 24: Criamos a instância do PDO e a retornamos no método getConnection() da classe Conexao.

Veja como vamos utilizar a classe de conexão e efetuar uma consulta trazendo algumas informações do Banco de Dados:

<?php define('DB_HOST' , "localhost"); define('DB_USER' , "sa"); define('DB_PASSWORD' , "devmedia"); define('DB_NAME' , "devmedia"); define('DB_DRIVER' , "sqlsrv"); require_once "Conexao.php"; try{ $Conexao = Conexao::getConnection(); $query = $Conexao->query("SELECT nome, preco, quantidade FROM produto"); $produtos = $query->fetchAll(); }catch(Exception $e){ echo $e->getMessage(); exit; } ?> <!DOCTYPE html> <html> <head> <title>Conexão PDO SQL Server</title> </head> <body> <form> <table border=1> <tr> <td>Nome</td> <td>Preço</td> <td>Quantidade</td> </tr> <?php foreach($produtos as $produto) { ?> <tr> <td><?php echo $produto['nome']; ?></td> <td>R$ <?php echo $produto['preco']; ?></td> <td><?php echo $produto['quantidade']; ?></td> </tr> <?php } ?> </table> </form> </body> </html>

Linhas 2 a 6: Temos as constantes para definir as configurações de conexão com o Banco de Dados.

Linha 8: Incluímos o arquivo da classe Conexao.

Linhas 10 a 19: Efetuamos a consulta no Banco de Dados. Caso ocorra algum erro será exibida uma mensagem em tela e a aplicação será finalizada.

Linhas 22 a 39: Utilizamos uma estrutura de repetição (foreach) para iterar sobre o resultado do BD e imprimir em tela.

Sugestão de conteúdo

Artigos relacionados