Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

walace

PHP e Oracle

Recommended Posts

Sei que muitos irão falar que têm vários exemplos na net sobre isso, mas vi vários e de nada adiantou, não estou conseguindo acessar.

 

Seguinte os passos do artigo do Júlio me dá a seguinte mensagem:

Fatal error: Call to undefined function: ocilogon() in c:\pmsjpnet\teste\phpora\conecta.php on line 11

Aí vai o script:

PHP

[*]<br /><?<br />//=========================================================//<br />//ARQUIVO: Arquivo de conexão com o banco de dados ORACLE<br />//DATA: 29/07/2002<br />//BY: Júlio César Martini<br />//=========================================================//<br /><br />$ora_user = "system"; //USUÁRIO <br />$ora_senha = "manager"; //SENHA<br /><br />$ora_conecta = ocilogon($ora_user,$ora_senha);<br /><br />if(!$ora_conecta)<br /> echo "ERRO !!! Verifique usuário e senha !";<br /><br />?>

 

No servidor instalei o cliente oracle, configurei o tnsnames para apontar para o servidor que usamos nos outros sistemas.

 

Agora estou tentando uma classo ADO, facilmente encontrada em ADODB.inc.php e com vários artigos na web sobre este assunto, mas dá o seguinte erro:

Fatal error: Class adodb_oracle: Cannot inherit from undefined class adoconnection in adodb.inc.php on line 18

Este erro está dentro do .inc.

 

Alguem tem idéia do que fazer para ajudar ?

Espero que este tópico fique bem problemático, longo e cheio de respostas, assim podemos ter uma fonte boa para este problema aqui. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Wallace,

 

So pra esclarecimentos... qual a versão do oracle que você esta utilizando? Ja tive probelmas com o exemplo do julio tambem para conecetar ao banco... vou mandar um exemplo de conexao que uso, mas quero deixar claro que a minha versao e 10g..... esse exemplo tbm vai servir para a versao o 8i do Oracle...

 

 $db = ocilogon("usuario","senha","banco");
É bem simples e similar com a do julio... a diferenca e que não funcionaria com o @ocilogon

 

Espero ter ajudado mais que atrapalhado...

Abraços

Flávia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só mais uma dica: o que me ajuda muito são as pesquisas que faço no site php.net. Voce pode sempre estar pesquisando por variáveis do OCI ou ORA!!!

 

Abraços,

Flavia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... vamos lá... o que fiz foi seguir os passos deste link:

http://www.oracle.com/technology/tech/php/...he_windows.html.

 

Mas os artigos do Júlio dão uma boa base, na minha opinião é leitura obrigatória.

 

Acredito que não tenha dado certo na primeira vez pq eu tinha uma versão inferior a esta do php, mas o que fiz foi instalar esta e também o cliente do oracle no servidor, mas não sei se isto é necessário mesmo. (Se alguem souber por favor responda).

 

No mais funcionou perfeitamente, aí vão os scripts:

 

Conexão:

PHP

[*]

[*]<?

[*] $user = 'TESTE';

[*] $pass = 'TESTE';

[*] $server = 'TESTE';

[*] $db_conn = ocilogon( $user, $pass, $server );

[*]?>

[*]

 

Select:

PHP

[*]

[*]<?

[*] include('conecta.php');

[*] $sql = 'SELECT * FROM TESTE';

[*] $parsed = ociparse($db_conn, $sql);

[*] ociexecute($parsed);

[*] $nrows = ocifetchstatement($parsed, $results);

[*] for ($i = 0; $i < $nrows; $i++ ) 

[*] {

[*] $cod = $results['COD'][$i];

[*] $nom = $results['NOM'][$i];

[*]

[*] echo '<br>Codigo: '.$cod.' Nome: '.$nom;

[*] }

[*] 

[*]?>

[*]

 

Inclusão:

PHP

[*]

[*]<?

[*] include('conecta.php');

[*] $sql = "INSERT INTO TESTE (COD, NOM) VALUES(4,'NOME 4')";

[*] $sql = ociparse($db_conn,$sql) or die("ERRO NA ANÁLISE DA CLÁUSULA SQL");

[*] ociexecute($sql,OCI_COMMIT_ON_SUCCESS);

[*] ocifreestatement($sql);

[*] ocilogoff($sql);

[*]?>

[*]

 

Alteração:

PHP

[*]

[*]<?

[*] include('conecta.php');

[*] $sql = "UPDATE TESTE SET NOM = 'NOME UM (ALTERA)' WHERE COD = 2";

[*] $sql = ociparse($db_conn,$sql) or die("ERRO NA ANÁLISE DA CLÁUSULA SQL");

[*] ociexecute($sql,OCI_COMMIT_ON_SUCCESS);

[*] ocifreestatement($sql);

[*] ocilogoff($sql);

[*]?>

[*]

 

Exclusão:

PHP

[*]

[*]<?

[*] include('conecta.php');

[*] $sql = "DELETE FROM TESTE WHERE COD = 2";

[*] $sql = ociparse($db_conn,$sql) or die("ERRO NA ANÁLISE DA CLÁUSULA SQL");

[*] ociexecute($sql,OCI_COMMIT_ON_SUCCESS);

[*] ocifreestatement($sql);

[*] ocilogoff($sql);

[*]?>

[*]

 

Bom está aí e espero que ajude alguem futuramente, só fica minha dúvida se precisa realmente do cliente oracle instalado neste servidor, vou tentar desinstalar e ver no que dá depois. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá wallace!Sobre o cliente, é fundamental que voce o tenha, pois ele é o responsavel pela conexao com o banco. E tipo uma biblioteca utilizada para conectar ao banco oracle... Muitos dizem que voce pode trabalhar mantendo somente o ODBC, porem até mesmo o ODBC possui um cliente para possibilitar a conexão com o banco!.... E com certeza esses scripts serão de grande ajuda!!!Abraços,Flávia

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza adailton, eu já tinha visto estes dois tópicos, mas o que postei me ajudou mais, pois detalha menor os passos, mas...agora meu problema mudou, já está tudo funcionando em uma máquina com XP, Apache e o php 4.3.9, mas onde vai rodar realmente, é um servidor Linux, acho que Debian... o cara que administra falou que fez tudo certo, mas não roda e dá o seguinte erro:

Warning: ocilogon(): _oci_open_server: ORA-12154: TNS:could not resolve the connect identifier specified in /home/walace/public_html/conecta.php on line 5

Acredito que seja algo com o tnsnames do Oracle, mas nem eu, nem o o "cara do Linux" sabe como resolver isso, alguem ajude !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa pessoal,

 

então adailton, tentei pesquisar o que você me falou, mas desde o início achei que fosse legal se tivesse uma forma para o desenvolvedor controlar o server que ia ser acessado, daí achei no próprio manual do php uma dica que mostra como alterar o tnsnames, ou melhor, informar no script php o server que será acessado.

 

Aí vai o conecta.php alterado:

PHP

[*]

[*]<?

[*] $user = 'HDARQ';

[*] $pass = 'SEMPLAN';

[*] $server = "(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))) (CONNECT_DATA =(SERVICE_NAME = SEU_SERVICE_NAME) ))";

[*] $db_conn = ocilogon( $user, $pass, $server );

[*]?>

[*]

 

Agora está tudo ok.

Valeu pela força pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.