Como criar uma ligação via PHP a um servidor de base-de-dados Microsoft SQL Server 2014 Express localmente usando a ODBC sem DSN (Database Source Name).
Neste “How-to”, ensino como fazer uma ligação a um servidor de base-de-dados Microsoft SQL 2014 Express local via PHP usando as funções ODBC (Open Database Connectivity) sem DSN explícito.
O desafio: ligar o PHP ao SQL Server
Recentemente, foi-me pedido para criar uma aplicação de gestão de pedidos de assistência. A questão é que o servidor de base-de-dados da empresa é um SQL Server da Microsoft e a aplicação antiga está em ASPX.
Ora a minha área sempre foi o PHP e o MySQL, e deram-me liberdade para programar em PHP. Só que alterar a base-de-dados para MySQL era impossível porque existe outro software que se alimenta do mesmo SQL Server.
Portanto, o desafio era “simples”: ligar o PHP a um servidor SQL Server.
Como montar um ambiente de desenvolvimento PHP – MS SQL Server local
Para poder trabalhar no meu computador sem colocar em risco a BD em produtivo, montei um ambiente de desenvolvimento local.
Para desenvolver e testar scripts e programas em PHP, costumo usar o WAMP portátil Uniform Server. E para ter um servidor de BD MS SQL Server fiz o download da versão 2014 Express e instalei-a no meu PC.
Como criar uma ligação PHP a uma base-de-dados MS SQL Server 2014 Express local
Como nunca tinha experimentado este tipo de ligação anteriormente, fui pesquisar. E aí é que o “simples” se tornou complicado. Tudo o que encontrei ou estava desactualizado ou não explicava bem. Aparentemente, tanto a Microsoft como o PHP já tiveram várias versões de drivers, extensões e funções respectivas para se fazerem ligações PHP-MS SQL Server.
Depois de várias tentativas falhadas, lá acabei por encontrar a maneira de conseguir ligar o PHP (versão 5.4) a um servidor de base-de-dados local Microsoft SQL Server 2014 Express.
Temos de usar as funções ODBC (Open Database Connectivity – Conexão Aberta a Bases-de-dados -, uma API para DBMS Database Management Systems – sistemas de gestão de base-de-dados – desenhada para ser o mais independente possível de sistemas de BDs e sistemas operativos) que são compatíveis com as versões 4 e 5 do PHP, como podem verificar na página da função odbc_connect() do Manual oficial do PHP
Aqui está, então, o código PHP para criar uma ligação a um servidor SQL Server 2014 Express local.
< ?php
// Substituir o valor destas varíaveis com os vossos valores
$user = 'username';
$pass = 'password';
$server = 'serverName\instanceName';
$database = 'database';
$connection_string = "DRIVER={SQL Server};SERVER=$server;DATABASE=$database";
// Não é preciso mudar nada a partir de agora
$conn = odbc_connect($connection_string,$user,$pass);
if ($conn) {
echo "Ligação ao SQL Server estabelecida.";
} else{
die("Incapaz de estabelecer ligação ao SQL Server.");
}
?>
Reparem que a variável $connection_string é preenchida sem um DSN explícito (DRIVER={SQL Server}). Foi a forma que encontrei para conseguir fazer a conexão à versão 2014 Express do MS SQL Server. Para as versões (SQL 7, 2000, 2005 e 2008) do SQL Server que usem o driver ODBC SQL Native Client 10.0, o valor da variável $connection_string deverá ficar assim atribuído:
$connection_string = odbc_connect("Driver={SQL Server Native Client 10.0}