Translate

quarta-feira, 19 de setembro de 2012

Realizar consultas MS SQL 2008 através de PHP



  1. Instalar pré-requisitos:
    apt-get install apache2 php5 libapache2-mod-php5 php5-mssql unixodbc unixodbc-dev freetds-dev tdsodbc freetds-bin
    
  2. Configurar /etc/freetds/freetds.conf, adicionando:
    [tds]
    host = IP_DO_SERVIDOR_MSSQL
    port = 1433
    tds version = 8.0 #Porta padrão para MSSQL
    client charset = UTF-8
    
  3. Configurar /etc/odbcinst.ini, adicionando:
    [tds]
    Description     = FreeTDS Driver for Linux & MSSQL on Win32
    Driver          = /usr/lib/odbc/libtdsodbc.so
    Setup           = /usr/lib/odbc/libtdsS.so
    UsageCount      = 1
    
  4. Configurar /etc/odbc.ini, adicionando:
    [tds]
    Description = Test to freeTDS
    Driver = tds
    Trace = No
    Database = BANCO_DE_DADOS
    Server = IP_DO_SERVIDOR_MSSQL
    Port = 1433 #Porta padrão para MSSQL
    
  5. Testar a conexão:
    isql -v tds USUARIO_DO_DB PASS_DO_DB
    #retornará: o prompt SQL "SQL>"
    
  6. Ativar o módulo ODBC em PHP5 (/etc/php5/apache2/php.ini), adicionando:
    extension = odbc.so
    
  7. Reiniciar o Apache:
    /etc/init.d/apache2 restart
    
  8. Testar a consulta em PHP, criando um script PHP como o seguinte:
    <?php
    //teste_de_coexao.php
    
    echo "<table>";
    $link = mssql_connect('IP_DO_SERVIDOR_MSSQL', 'USUARIO_NO_DB', 'PASS_NO_DB');
    
    if (!$link) {
       die('Unable to connect!');
    }
    
    if (!mssql_select_db('BANCO_DE_DADOS', $link)) {
       die('Unable to select database!');
    }
    
    $result = mssql_query('SELECT * FROM TABELA');
    
    while ($row = mssql_fetch_array($result)) {
       echo "<tr><td>NA: " . $row['numero'] . "/" . $row['ano'] . "</td><td> Solicitante: " . $row['solicitante'] . "</td></tr>";
    }
    
    echo "</table>";
    mssql_free_result($result);
    ?>
    

Acesse o site para verificar se o resultado esperado foi retornado.


Se tiver problemas com charset:
http://www.rafaeltheodoro.com.br/php/converter-codificacao-do-sqlserver-para-o-mysql-em-php-charset-cp850-do-sqlserver-para-mysql/comment-page-1/