PHP com Firebird

16/03/2016

Prezados:

1- Preciso acessar dados de uma tabela (produtos) em um banco de dados Firebird 1.5;
2- Instalei o Firebird 1.5 em um Windows 7 x64, sem erros;
3- Utilizo o XAMPP e já habilitei, no Apache, a DLL responsável pela conexão com o Firebird;
4- Realizei o start do Apache, mas houve erro relacionado a instalação do fbclient.dll;
5- Fiz uso do seguinte artigo: https://wiki.php.net/internals/windows/libs/firebird para tentar configurar;
6- O erro continua acontecendo;
7- Quando acesso o index.php, o erro amostrado é o seguinte: "Fatal error: Call to undefined function ibase_connect() in C:\xampp\htdocs\teste_firebird\index.php on line 8"
8- Segue código (copiado de dirceuresende.com):
<?php
// Conecta no banco de dados
$hostname = "localhost:C:\xampp\htdocs\teste_firebird\banco\banco.gdb";
$usuario = "SYSDBA"; // Usuário padrão do Firebird
$senha = "masterkey"; // Senha padrão do Firebird
 
$conexao = ibase_connect( $hostname, $usuario, $senha ) or die( 'Erro ao conectar: ' . ibase_errmsg() );
 
$Arr_Dados = array();
 
$Ds_Query = "SELECT * FROM cliente";
$Ds_Retorno = ibase_query( $Ds_Query );
 
while ( $Ds_Linha_Banco = ibase_fetch_row( $Ds_Retorno ) )
{
    $Arr_Dados[] = $Ds_Linha_Banco;
}
 
var_dump($Arr_Dados);


9- Tentei de todas as formas registrar o fbcliend.dll, mas dá erro no Windows.

Agradeço a ajuda desde já.

Atenciosamente,

Edison Coelho.

Melhor resposta

18/03/2016

Prezado Sr. Joaci: 1- Deixe de ser ignorante, "Fdp_Poa", é? Tu é o tipo de cara que não presta para a profissão, pelo visto; 2- Pedirei que os moderadores lhe apliquem alguma sanção por conta de sua falta de ética; 3- LEIA ao contrário de falar besteiras: tu dizes que eu cometi um erro absurdo, mas não percebe que o "A", no nome do banco, é, na verdade o ARTIGO (caso não tenha estudado português, é a primeira linguagem que o senhor deveria saber), na frase "A sintaxe do nome do arquivo, do nome do diretório ou do rótulo...". É óbvio que a mensagem saiu colada/concatenada com o caminho do arquivo. Fico no aguardo da ajuda de alguém melhor intencionado.



Prefiro acreditar que tenha sido mais um erro de digitação do colega "JOACI", já respondi e monitorei outros tópicos que ele participou e nunca presenciei desrespeito dele com outros integrantes.

Quanto a sua dúvida, o comando "SHOW TABLES" não vai funcionar, esse comando funciona apenas para ferramenta Isql!

No Firebird podemos listar tabelas via query com a instrução abaixo:

SELECT rdb$relation_name
FROM rdb$relations
WHERE rdb$view_blr is null 
AND (rdb$system_flag is null OR rdb$system_flag = 0);

William (devwilliam)

Responder Citar

Outras Respostas

16/03/2016

Joaci Gomes

Provavelmente o usuário e a senha desse banco não seja mais a padrão, como especificado.
Responder Citar

16/03/2016

Lincoln Viana

Na parte que tá assim:

// Conecta no banco de dados
$hostname = "localhost:C:\xampp\htdocs\teste_firebird\banco\banco.gdb";



Faz assim:
// Conecta no banco de dados
$hostname = "127.0.0.1:C:\xampp\htdocs\teste_firebird\banco\banco.gdb";
Responder Citar

17/03/2016

Edcp_poa

Boa tarde, Sr. Joaci.

A conta (SYSDBA) e senha estão corretas. Já fiz este teste com o BDE.

Segue erro relacionado a DLL, ao iniciar o XAMPP.[img:descricao=Erro relacionado à DLL]http://arquivo.devmedia.com.br/forum/imagem/393571-20160317-135538.png[/img]

Obrigado e espero que possa me dar mais ajuda.
Responder Citar

17/03/2016

Edcp_poa

Obrigado pela ajuda, Sr. Lincoln.

Infelizmente o problema não chega nem nessa parte, pois há um erro relacionado à engine que faz a conexão do PHP com o Firebird.

Novamente: a versão do Firebird é a 1.5.

Segue print do erro, após execução do script PHP.

[img]http://arquivo.devmedia.com.br/forum/imagem/393571-20160317-140154.png[/img]
Responder Citar

17/03/2016

Edcp_poa

Prezados:

Pesquisando, achei uma linha no arquivo php.ini que precisava ser descomentada e o novo erro na página é o que segue:

[img]http://arquivo.devmedia.com.br/forum/imagem/393571-20160317-155219.png[/img]

Já substituí a linha 3 ($hostname = "localhost:C:\xampp\htdocs\teste_firebird\banco\banco.gdb";), modificando localhost por 127.0.0.1 e pelo IP dado pelo DHCP do roteador, mas sem sucesso.

Agradeço a ajuda desde já.
Responder Citar

18/03/2016

Joaci Gomes

Prezados: Pesquisando, achei uma linha no arquivo php.ini que precisava ser descomentada e o novo erro na página é o que segue: [img]http://arquivo.devmedia.com.br/forum/imagem/393571-20160317-155219.png[/img] Já substituí a linha 3 ($hostname = "localhost:C:\xampp\htdocs\teste_firebird\banco\banco.gdb";), modificando localhost por 127.0.0.1 e pelo IP dado pelo DHCP do roteador, mas sem sucesso. Agradeço a ajuda desde já.


Meu amigo Fdp_Poa,

Dessa vez o erro é porque o nome do arquivo do banco está como *. gdbA

Att,
Responder Citar

18/03/2016

Edcp_poa

[quote]Prezados: Pesquisando, achei uma linha no arquivo php.ini que precisava ser descomentada e o novo erro na página é o que segue: [img]http://arquivo.devmedia.com.br/forum/imagem/393571-20160317-155219.png[/img] Já substituí a linha 3 ($hostname = "localhost:C:\xampp\htdocs\teste_firebird\banco\banco.gdb";), modificando localhost por 127.0.0.1 e pelo IP dado pelo DHCP do roteador, mas sem sucesso. Agradeço a ajuda desde já.


Meu amigo Fdp_Poa,

Dessa vez o erro é porque o nome do arquivo do banco está como *. gdbA

Att,[/quote]

Prezado Sr. Joaci:

1- Deixe de ser ignorante, "Fdp_Poa", é? Tu é o tipo de cara que não presta para a profissão, pelo visto;
2- Pedirei que os moderadores lhe apliquem alguma sanção por conta de sua falta de ética;
3- LEIA ao contrário de falar besteiras: tu dizes que eu cometi um erro absurdo, mas não percebe que o "A", no nome do banco, é, na verdade o ARTIGO (caso não tenha estudado português, é a primeira linguagem que o senhor deveria saber), na frase "A sintaxe do nome do arquivo, do nome do diretório ou do rótulo...". É óbvio que a mensagem saiu colada/concatenada com o caminho do arquivo.

Fico no aguardo da ajuda de alguém melhor intencionado.
Responder Citar

18/03/2016

Edcp_poa

Prezados:

Espero que isto sirva para muitos e que contribua com o Fórum. Na conexão, tratava-se de um erro simples: colocar duas contra barras, já que estou lidando com o Windows.

Novo código, com a conexão efetuada:
<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="UTF-8">
        <title>TESTE FIREBIRD</title>
    </head>
    <body>
        <?php
        // Conecta no banco de dados
        $hostname = "127.0.0.1:C:\\xampp\\htdocs\\teste_firebird\\banco\\shop.gdb";
        $usuario = "SYSDBA"; // Usuário padrão do Firebird
        $senha = "masterkey"; // Senha padrão do Firebird

        $conexao = ibase_connect($hostname, $usuario, $senha) or die('<p>Código do erro: ' . ibase_errcode() . '</p><p>Mensagem de erro: <br>' . ibase_errmsg() . "</p>");

        $Arr_Dados = array();

        $Ds_Query = "SHOW TABLES;";
        $Ds_Retorno = ibase_query($Ds_Query);

        while ($Ds_Linha_Banco = ibase_fetch_row($Ds_Retorno)) {
            $Arr_Dados[] = $Ds_Linha_Banco;
        }

        var_dump($Arr_Dados);
        ?>
    </body>
</html>


Novo erro de retorno com query SHOW tables:
[img]http://arquivo.devmedia.com.br/forum/imagem/393571-20160318-165903.png[/img]

Fico no aguardo das considerações dos amigos.

Obrigado.
Responder Citar

18/03/2016

Edcp_poa

[quote] Prezado Sr. Joaci: 1- Deixe de ser ignorante, "Fdp_Poa", é? Tu é o tipo de cara que não presta para a profissão, pelo visto; 2- Pedirei que os moderadores lhe apliquem alguma sanção por conta de sua falta de ética; 3- LEIA ao contrário de falar besteiras: tu dizes que eu cometi um erro absurdo, mas não percebe que o "A", no nome do banco, é, na verdade o ARTIGO (caso não tenha estudado português, é a primeira linguagem que o senhor deveria saber), na frase "A sintaxe do nome do arquivo, do nome do diretório ou do rótulo...". É óbvio que a mensagem saiu colada/concatenada com o caminho do arquivo. Fico no aguardo da ajuda de alguém melhor intencionado.



Prefiro acreditar que tenha sido mais um erro de digitação do colega "JOACI", já respondi e monitorei outros tópicos que ele participou e nunca presenciei desrespeito dele com outros integrantes.

Quanto a sua dúvida, o comando "SHOW TABLES" não vai funcionar, esse comando funciona apenas para ferramenta Isql!

No Firebird podemos listar tabelas via query com a instrução abaixo:

SELECT rdb$relation_name
FROM rdb$relations
WHERE rdb$view_blr is null 
AND (rdb$system_flag is null OR rdb$system_flag = 0);
[/quote]

Prezado Sr. William:

1- Muito obrigado pela pronta resposta. Mais um sinal de profissionalismo da DEVMEDIA.
2- Sobre o Sr. Joaci, não tenho a mesma opinião.
3- Me utilizei do site do Firebird, onde peguei uma query igual, ou semelhante. Muito obrigado por disponibilizá-la.
4- Consegui as informações que precisava e dou o tópico por encerrado. Como disse, colocarei, quando possível, em meu blog, um passo a passo para ajudar aqueles que tiveram o mesmo problema.

Um grande abraço e, mais uma vez, parabéns pelo site.

Atenciosamente,

Edcp_poa
Responder Citar

18/03/2016

William (devwilliam)

Compartilhe conosco o link do seu blog por gentileza, estou finalizando o tópico!
Responder Citar