2008/9/9 Marcos Fabrício Corso <[EMAIL PROTECTED]>

>  ----- Original Message ----- *From:* Marcos Fabrício Corso<[EMAIL PROTECTED]>
> *To:* Lista PHP <[EMAIL PROTECTED]>
> *Cc:* Lista Postgres <[email protected]>
> *Sent:* Tuesday, September 09, 2008 10:57 AM
> *Subject:* Conexão PHP e Postgresql
>
> Olá pessoal
> Criei uma classe de conexão do PHP com o Postgresql
>
>
> *conexao.php*
> **
> Class Postgresql {
>     public function conectar() {
>         $this->postgres = pg_connect( "host=localhost port=5432
> dbname=teste user=teste password=teste" ) ;
>

    Esqueceu de enviar o código que diz que "postgres" é um atributo da
classe ou é porque não colocou mesmo?
Algo do tipo:

private $postgres; (PHP 5)

var $postgres; (PHP4)


>
>         $status2 = pg_connection_status($this->postgres);
>         if ($status2 != 0) {
>             echo 'Erro na conexão com o banco de daddos, por favor, aguarde
> uns instantes para acessar novamente';
>             die();
>         }
>         return ;
>     }
>
>     public function desconectar() {
>         $status = pg_connection_status($this->postgres);
>         if ($status != 0) {
>             echo 'Erro na conexão com o banco de daddos, por favor, aguarde
> uns instantes para acessar novamente';
>             die();
>         }
>         $ocupa = pg_connection_busy($this->postgres);
>         if ($ocupa) {
>             echo 'Erro na conexão com o banco de daddos, por favor, aguarde
> uns instantes para acessar novamente';
>             die();
>         }
>         pg_close( $this->postgres ) ;
>         return ;
>     }
>
>     public function executar($sql1) {
>         $status1 = pg_connection_status($this->postgres);
>         if ($status1 != 0) {
>             echo 'Erro na conexão com o banco de daddos, por favor, aguarde
> uns instantes para acessar novamente';
>             die();
>         }
>         $resultado1 = pg_query($this->postgres, $sql1);
>         return $resultado1 ;
>     }
> }
>
> Nos meus arquivos eu chamo
>
> *cadastro.php*
> *...*
> *        *require_once('conexao.php') ;
>         $conecta = new Postgresql();
>         $conecta->conectar();
>         $resultado = $conecta->executar( " select uf, cidade, fantasia
> from cliente where codigo = $this->ued ; " );
>         $total = pg_numrows ($resultado);
>         for ($tupla = 0; $tupla < $total; $tupla ++) {
>             $estado = pg_result ($resultado, $tupla, 0);
>             $cidade = pg_result ($resultado, $tupla, 1);
>             $fantas = pg_result ($resultado, $tupla, 2);
>         }
>         $conecta->desconectar();
> ....
>
>
> Mas durante a execução do código, aparece o seguinte erro, dizendo que a
> conexão está ocupada, acho que porque ele está execuntando ...
>
> *Warning*: pg_connection_status(): 16 is not a valid PostgreSQL link
> resource in */home/httpd/vhosts/httpdocs/matricula_novo/conexao.php* on
> line *76*
>
> *Warning*: pg_query(): 16 is not a valid PostgreSQL link resource in *
> /home/httpd/vhosts/httpdocs/matricula_novo/conexao.php* on line *81*
> Mas preciso as vezes fazer uns 2 ou 3 select juntos, como resolver isso
>
>

     O erro não é porque o banco esteja "ocupado", mas sim porque o atributo
passado como "Postgresql Link Resource" não é desse tipo. Isso reforça minha
tese de que esqueceu de colocar o item "$postgres" como um atributo da
classe...

-- 
William Leite Araújo
Analista de Banco de Dados - QualiConsult
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a