PHP com Firebird
16/03/2016
0
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.
Edcp_poa
Post mais votado
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
Mais Posts
16/03/2016
Joaci Gomes
16/03/2016
Lincoln Viana
// 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";
17/03/2016
Edcp_poa
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.
17/03/2016
Edcp_poa
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]
17/03/2016
Edcp_poa
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á.
18/03/2016
Joaci Gomes
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,
18/03/2016
Edcp_poa
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,
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.
18/03/2016
Edcp_poa
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.
18/03/2016
Edcp_poa
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);
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
18/03/2016
William
Clique aqui para fazer login e interagir na Comunidade :)