quinta-feira, 13 de junho de 2013

PHP + MSSQL + WinXP

Se você tentar baixar a versão mais nova de PHP e usá-la para se conectar a um banco SQL Server, você poderá entrar em apuros ao utilizar código antigo. O problema é que as funções da família mssql_* foram cortadas de PHP a partir da versão 5.3.

A Microsoft disponibiliza uns dlls que trazem umas funções novas (não documentadas no site oficial de PHP) e o módulo PDO, mas eles não vêm com as funções mssql. Além disso, esses dlls não podem ser instalados em nenhuma versão do Windows anterior ao 7 ou Server 2008.

No meu caso, eu tive que conectar PHP a um banco SQL Server 2000 que rodava em um Windows Server 2003. Os dlls da Microsoft simplesmente não podiam ser usados.

A solução foi trocar as funções mssql para as funções odbc_*, que são praticamente idênticas. As diferenças são as seguintes:
  • Todas as funções começam com odbc_;
  • A função odbc_exec é equivalente à mssql_query, mas exige que o primeiro argumento seja a conexão. No caso da mssql_query, isso podia ser omitido;
  • No meu caso de teste, a função odbc_num_rows sempre retorna -1, o que significa que você não tem como saber a priori se uma consulta trouxe resultados ou não;
Pra finalizar as funções odbc de PHP já vem compiladas com a própria linguagem na versão para Windows, de forma que não é preciso mudar nada no PHP.ini. Se você quiser usar essas funções no linux, então será preciso instalar algumas coisas e fazer um bocado de configurações que são assunto para um post futuro.

Nenhum comentário:

Postar um comentário