terça-feira, 25 de junho de 2013

Várias formas de se conectar a SQL Server em PHP

Prosseguindo na série de posts sobre PHP e SQL Server, vou listar aqui as diversas formas de se conectar ao banco de dados da Microsoft a partir de código em PHP. Em todos os exemplos o servidor se chama padaria-server, o usuário é padeiro e a senha é pão francês. Os exemplos com ODBC supõem a existência de uma conexão ODBC chamada "Padaria".

Funções MSSQL

$conn = mssql_connect("padaria-server","padeiro","pão francês");

A função mssql_connect permite conexão direta ao banco, mas não está disponível em versões de PHP posteriores à 5.3.

Funções ODBC

$conn = odbc_connect("DSN=Padaria","padeiro","pão francês");

A função odbc_connect e sua família executam consultas a qualquer banco, desde que o respectivo driver OBDC esteja instalado. Adicionar uma conexão ODBC é uma tarefa fácil no Windows, mas é muito trabalhosa no Linux e, em si, já é assunto para um post futuro. Essa família de funções já vem compilada com a versão PHP do Windows e não exige modificação do arquivo php.ini.

Conexão direta com a PDO

Isso pode ser feito de pelo menos três formas, dependendo do sistema operacional e da versão do PHP.

sábado, 22 de junho de 2013

Ajeitando a tela depois de usar o DOSBox

Após jogar no DOSBox no Linux Debian, pode acontecer de a resolução da tela cair para o tamanho da resolução do jogo. Isso é provavelmente algum problema na configuração do DOSBox, ou do OpenGL, ou ainda pode ser por causa de um driver de vídeo ruim. Seja como for, fica muito difícil voltar à configuração original apenas pela interface gráfica, porque os ícones ficam grandões e as janelas não aparecem por completo em uma resolução de, digamos, 320x240.

A solução é, em primeiro lugar, começar o DOSBox pelo terminal (abra o terminal e digite "dosbox"). Assim, quando o programa finalizar, você poderá digitar o seguinte comando:

xrandr -s 1600x900

Obviamente você deverá mudar o valor da resolução (1600x900, no meu caso) para a sua própria.

terça-feira, 18 de junho de 2013

Contando linhas do resultado com odbc_num_rows

A função odbc_num_rows teoricamente mostra o número de linhas retornadas em uma consulta ODBC. Usando com o SQL Server, no entanto, ela normalmente retorna -1.

No meu caso de teste, notei que ela funciona corretamente se a consulta tiver um TOP. Por exemplo, "Select top 100 nome from aluno" irá retornar o número correto de alunos, desde que seja menor do que 100. O macete é usar um top com um valor muito mais alto do que o esperado para obter o valor correto.

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.

Está vivo!

Está criado então o Preguiça de Programar!

O objetivo deste blog é trazer dicas de coisas aleatórias do mundo da computação para tentar ajudar colegas que encontrem os mesmos problemas que eu. Especificamente, vou postar aqui a solução de problemas chatos que me tomarem muito tempo pra resolver.

Para cada problema vou tentar fazer um passo-a-passo que seja simples, mas suficientemente geral para que sirva a um bom número de pessoas.

O título é um trocadilho com as funções de expressão regular de PHP.