PHP usando ODBC

ODBC é uma interface de programação que permite que você se conecte a um banco de dados de forma genérica o que permite uma independencia do banco de dados a ser usado.

Criando uma conexão ODBC

Antes de criar a fonte ODBC você deve ter o banco de dados. Neste exemplo usaremos o banco de dados de exemplo do MS Access: o Northwind Traders Sample Database. Baixe o arquivo do link e execute-o depois de finalizado o download, selecione o local onde serão extraidos os arquivos e guarde este local. Ele será usado em seguida.

Com ODBC você pode se conectar a qualquer banco de dados em qualquer computador da sua rede, desde que uma conexão ODBC esteja disponível.

Aqui esta como criar uma conexão ODBC com um banco de dados MS Access:
  1. No painel de controle abra o item Ferramentas Administrativas.
  2. Abra o item Fontes de dados(ODBC)
  3. Escolha a aba Fonte de dados do Sistema
  4. Na aba Fonte de dados do Sitema clique em Adicionar
  5. Selecione o item Driver do Microsoft Access(*.mdb).Clique em concluir
  6. Na proxima tela, clique em Selcionar para localizar o banco de dados.
  7. Procure o arquivo Nwind.mdb no diretório escolhido durante a instalação.
  8. De um nome para a fonte de dados.
  9. Clique Ok.
Obserque que esta configuração deve ser feita no computador onde o seu site está localizado. Se o seu site estiver rodando localmente estas configurações servirão. No entanto se for um site remoto você tera que pedir ao administrador do seu servidor que crie uma um nome de fonte de dados para você.

Conectando a um banco ODBC

A função odbc_connect() é usada para se conectar a uma fonte de dados ODBC. A função tem quatro parâmetros: nome da fonte de dados, nome de usuário, senha e opcionalmente o parâmetro tipo de cursor.

A função odbc_exec() é usada para executar uma consulta SQL.

Exemplo

O exemplo seguinte cria uma conexão ao uma fonte de dados chamada nwind, sem nome de usuário nem senha. Depois ele cria um SQL e o executa:
   1:<?php
   2:$conn = odbc_connect('nwind','','');
   3:$sql = "SELECT * FROM customers";
   4:$rs = odbc_exec($conn , $sql);
   5:?>
Obtendo registros

A função odbc_fetch_row() é usada para retornar registros de um resultado. Esta função retorna true se ela conseguir retornar as linhas e falso caso nao.

A função recebe dois parâmetros: o identificador de resultado ODBC e opcionalmente um número de linha:

odbc_fetch_row($rs)

Obtendo campos de um registro

A função odbc_result() é usada para ler os campos de um registro. Esta função recebe dois parâmetros: o identificador de resultado ODBC e o numero ou nome de um campo.

O código abaixo retorna o valor do primeiro campo do registro:

$compname = odbc_result($rs, 1);

O código abaixo retorna o valor de um campo chamado "CompanyName":

$compname = odbc_result($rs, "CompanyName");

Fechando uma conexão ODBC

A função odbc_close() é usada para fechar uma conexão ODBC.

odbc_close($conn);

Um exemplo usando ODBC

O exemplo seguinte mostra como criar uma conexão com o banco de dados, então um conjunto de resultados e depois mostrar os dados em uma tabela HTML.
   1:<html>
   2:<body>
   3:<?php
   4:    $conn = odbc_connect('nwind','','')
   5:        or die('Conexão falhou');
   6:   
   7:    $sql = 'select * from customers';
   8:    $rs = odbc_exec($conn, $sql)
   9:        or die('Erro no sql');
  10:   
  11:    echo "<table><tr>";
  12:    echo "<th>Empresa</th>";
  13:    echo "<th>Contato</th></tr>";  
  14:    while (odbc_fetch_row($rs)) {
  15:        echo "<tr><td>".odbc_result($rs, "CompanyName")."</td>";
  16:        echo "<td>".odbc_result($rs,"ContactName")."</td></tr>";       
  17:    }
  18:    odbc_close($conn);
  19:    echo "</table>"
  20:?>
  21:</body>
  22:</html>
Fonte

10 comentários:

  1. Muito Bom ::D
    exatamente oque eu estava procurando ;)

    ResponderExcluir
  2. Muito bom cara, finalmente consegui conectar sem dificuldade, obrigado por compartilhar!!

    ResponderExcluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir
  4. Muito bom seu post, porem estou com um problema talvez alguem possa me ajudar, tenho esse codigo abaixo, porem apresenta o seguinte erro: Warning : odbc_exec():in C:\xampp\htdocs\index.php on line 17 erro sql .
    \\$database = 'COOP_TCE' ;
    \\$user = 'usr0224' ;
    \\$password = 'd1B3CMMo4qxW2le' ;
    \\$conn = odbc_connect ( $database , $user , $password );
    \\$sql = 'SELECT * FROM CONTACAPITAL';
    \\$res = odbc_exec($conn, $sql) or die ("erro sql");

    ResponderExcluir
  5. Olá Juliano,
    uma forma de você entender o que está acontecendo é removendo o "or die" pois assim ele deve mostrar pra você que problema está acontecendo (considerando é claro a sua configuração para exibição de erros e mensagens). Outro recurso é usar a função odbc_error ou odbc_errormsg no lugar de "erro sql" o que deve te dar informações melhores.

    ResponderExcluir
  6. Muito obrigado pela ajuda Thiago, porem tirando o "or die" , só é me apresentado o erro "Warning : odbc_exec():inC:\xampp\htdocs\index.php on line 17 " , o php se conecta com o db2 , porem parece que não esta conseguindo fazer a consulta. Se vc tiver alguma outra ideia, pois sou novo em php.

    ResponderExcluir
    Respostas
    1. Bom, e as funções de erro? Tenta chamar depois que você conecta ao banco. Talvez a conexão não esteja realmente sendo feita efetivamente. Da uma olhada na documentação do PHP também com relação às funções de ODBC. Você pode encontrar alguma outra saida por lá também.

      Excluir
  7. Thiago , com o codigo abaixo o erro que aparece é esse : Connection succeeded.
    Warning: odbc_exec(): in C:\xampp\htdocs\index.php on line 23


    \\php
    $database = 'COOP_TCE' ;
    $user = 'usr0224' ;
    $password = 'd1B3CMMo4qxW2le' ;

    $conn = odbc_connect ( $database , $user , $password );

    if ( $conn ) {
    echo "Connection succeeded." ; }
    else {
    echo "Connection failed." ;
    }

    $sql = 'SELECT * FROM CONTACAPITAL';
    $res = odbc_exec($conn, $sql) or "odbc_error";


    ?>

    ResponderExcluir