Você está na página 1de 52

PHP com PostgreSQL

Maurcio de Castro mcastro@solis.coop.br Coodenador de Desenvolvimento SOLIS/UNIVATES

Maurcio de Castro

PHP com PostgreSQL

Table of Contents
I. Funes para PostgreSQL.....................................................................................................................4 Introduo..................................................................................................................................................4 Requisitos..................................................................................................................................................4 Instalao...................................................................................................................................................4 Configurao durante execuo...............................................................................................................4 Como usar e algumas dicas......................................................................................................................6 Constantes Predefinidas............................................................................................................................8 Exemplos...................................................................................................................................................9 pg_affected_rows....................................................................................................................................12 pg_cancel_query.....................................................................................................................................12 pg_client_encoding.................................................................................................................................13 pg_close...................................................................................................................................................13 pg_connect..............................................................................................................................................14 pg_connection_busy...............................................................................................................................15 pg_connection_reset...............................................................................................................................15 pg_connection_status..............................................................................................................................16 pg_convert...............................................................................................................................................16 pg_copy_from.........................................................................................................................................17 pg_copy_to..............................................................................................................................................17 pg_dbname..............................................................................................................................................18 pg_delete.................................................................................................................................................18 pg_end_copy...........................................................................................................................................19 pg_escape_bytea.....................................................................................................................................19 pg_escape_string.....................................................................................................................................20 pg_fetch_all.............................................................................................................................................20 pg_fetch_array.........................................................................................................................................21 pg_fetch_assoc........................................................................................................................................22 pg_fetch_object.......................................................................................................................................23 pg_fetch_result........................................................................................................................................25 pg_fetch_row...........................................................................................................................................25 pg_field_is_null......................................................................................................................................26 pg_field_name.........................................................................................................................................27 pg_field_num..........................................................................................................................................27 pg_field_prtlen........................................................................................................................................28 pg_field_size...........................................................................................................................................28 pg_field_type...........................................................................................................................................28 pg_free_result..........................................................................................................................................29 pg_get_notify..........................................................................................................................................30 pg_get_pid...............................................................................................................................................30 pg_get_result...........................................................................................................................................31 pg_host....................................................................................................................................................31 pg_insert..................................................................................................................................................32 pg_last_error............................................................................................................................................32 pg_last_notice.........................................................................................................................................33 pg_last_oid..............................................................................................................................................34 pg_lo_close..............................................................................................................................................35 pg_lo_create............................................................................................................................................35 pg_lo_export............................................................................................................................................36

Maurcio de Castro

PHP com PostgreSQL

pg_lo_import...........................................................................................................................................36 pg_lo_open..............................................................................................................................................37 pg_lo_read_all.........................................................................................................................................37 pg_lo_read...............................................................................................................................................38 pg_lo_seek...............................................................................................................................................39 pg_lo_tell.................................................................................................................................................39 pg_lo_unlink............................................................................................................................................39 pg_lo_write..............................................................................................................................................40 pg_metadata............................................................................................................................................40 pg_num_fields.........................................................................................................................................41 pg_num_rows..........................................................................................................................................41 pg_options...............................................................................................................................................42 pg_pconnect............................................................................................................................................42 pg_ping....................................................................................................................................................43 pg_port.....................................................................................................................................................43 pg_put_line..............................................................................................................................................43 pg_query..................................................................................................................................................44 pg_result_error........................................................................................................................................45 pg_result_seek.........................................................................................................................................46 pg_result_status.......................................................................................................................................46 pg_select..................................................................................................................................................47 pg_send_query........................................................................................................................................47 pg_set_client_encoding..........................................................................................................................48 pg_trace...................................................................................................................................................49 pg_tty.......................................................................................................................................................49 pg_unescape_bytea.................................................................................................................................50 pg_untrace...............................................................................................................................................50 pg_update................................................................................................................................................51 REFERNCIA........................................................................................................................................52

Maurcio de Castro

PHP com PostgreSQL

Funes para PostgreSQL Introduo


O banco de dados PostgreSQL um produto de cdigo aberto e disponvel gratuitamente. O Postgres, desenvolvido originalmente no Departamento de Cincia de Computao da Universidade de Berkeley, foi pioneiro em muitos dos conceitos objetorelacionais que agora esto disponveis em alguns bancos de dados comerciais. Fornece suporte a linguagem SQL92/SQL99, integridade de transaes e extensibilidade de tipos. O PostgreSQL um descendente com cdigo aberto do cdigo original desenvolvido em Berkeley.

Requisitos
Para usar usar as funes para PostgreSQL, voc precisa do PostgreSQL 6.5 ou superior e PostgreSQL 7.0 ou superior para habilitar todos os recursos deste mdulo. PostgreSQL suporta inmeros tipos de codificao de caracteres incluindo a codificao de caracteres multibyte. A verso mais atual e mais informaes sobre PostgreSQL esto disponveis em http://www.postgresql.org/.

Instalao
Para habilitar o mdulo de funes para PostgreSQL, a opo de configurao -with-pgsql[=DIR] deve ser usada no momento da compilao do PHP. Se o mdulo PostgreSQL estiver disponvel como objeto compartilhado, poder ser carregado usando a diretiva extension no php.ini ou a funo dl().

Configurao durante execuo


O comportamento dessas funes podem ser modificado pelas configuraes do php.ini.

Maurcio de Castro

PHP com PostgreSQL

Tabela 1. Opes de configurao do PostgreSQL Nome pgsql.allow_persistent pgsql.max_persistent pgsql.max_links pgsql.auto_reset_persiste nt pgsql.ignore_notice pgsql.log_notice Padro "1" "-1" "-1" "0" "0" "0" Altervel PHP_INI_SYSTEM PHP_INI_SYSTEM PHP_INI_SYSTEM PHP_INI_SYSTEM PHP_INI_ALL PHP_INI_ALL

Para mais detalhes e definies das constantes PHP_INI_* veja ini_set(). Aqui est uma pequena explicao sobre as diretivas de configurao.
pgsql.allow_persistent boolean Se quer ou no permitir conexes persistentes com o PostgreSQL. pgsql.max_persistent integer O nmero mximo de conexes persistentes com PostgreSQL por processo. pgsql.max_links integer O nmero mximo de conexes PostgreSQL por processo, incluindo as persistentes.

Maurcio de Castro

PHP com PostgreSQL

Como usar e algumas dicas


Ateno
Usar o mdulo PostgreSQL com o PHP 4.0.6 no recomendado devido a um bug no cdigo de manipulao de notificaes. Use o 4.1.0 ou superior.

Ateno
Os nomes das funes PostgreSQL sero alterados na verso 4.2.0 para confirmar os padres de programao atuais. A maioria dos novos nomes tero sublinhados (underscore) adicionais, por exemplo, pg_lo_open(). Algumas funes foram renomeadas para uma maior consistncia, por exemplo, pg_exec() mudou para pg_query(). Os nomes antigos podem ser usados na 4.2.0 e em algumas poucas outras verses aps esta, mas eles sero removidos futuramente. Tabela 2. Nomes de funes alterados

pg_exec() pg_getlastoid() pg_cmdtuples() pg_numrows() pg_numfields() pg_fieldname() pg_fieldsize() pg_fieldnum() pg_fieldprtlen() pg_fieldisnull() pg_freeresult() pg_result() pg_loreadall() pg_locreate() pg_lounlink() pg_loopen() pg_loclose() pg_loread() pg_lowrite() pg_loimport() pg_loexport()

pg_query() pg_last_oid() pg_affected_rows() pg_num_rows() pg_num_fields() pg_field_name() pg_field_size() pg_field_num() pg_field_prtlen() pg_field_is_null() pg_free_result() pg_fetch_result() pg_lo_read_all() pg_lo_create() pg_lo_unlink() pg_lo_unlink() pg_lo_close() pg_lo_read() pg_lo_write() pg_lo_import() pg_lo_export()

Maurcio de Castro

PHP com PostgreSQL

A antiga sintaxe pg_connect()/pg_pconnect() ficar obsoleta para suportar conexes assncronas no futuro. Por favor, use a string de conexo para pg_connect() e pg_pconnect(). Nem todas as funes so suportadas por todas as compilaes. Isso vai depender da verso da libpq (A interface cliente em C para PostgreSQL) e como esta foi compilada. Se h alguma funo ausente, porque a libpq no suporta a caracterstica exigida por esta funo. Tambm importante que voc use uma verso da libpq mais nova do que a que o servidor exige. Se voc usar uma verso mais antiga do que a que o servidor espera, voc poder ter problemas. Desde a verso 6.3 (03/02/1998), o PostgreSQL usa sockets de domnio unix por padro. A porta TCP no ficar aberta por padro. Uma tabela mostrada abaixo descrevendo essas novas possibilidades de conexo. Este socket ser encontrado em /tmp/.s.PGSQL.5432. Esta opo pode ser habilitada com o parmetro '-i' para o postmaster e seu significado : "escute em sockets TCP/IP assim como em sockets de domnio Unix". Tabela 3. Postmaster e PHP Postmaster postmaster & postmaster -i & PHP pg_connect("dbname=MyDbName"); pg_connect("dbname=MyDbName"); Status OK OK Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster & pg_connect("host=localhost dbname=MyDbName"); postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php on line 20. postmaster -i & pg_connect("host=localhost dbname=MyDbName"); OK

Maurcio de Castro

PHP com PostgreSQL

Uma conexo com o servidor PostgreSQL pode ser estabelecida com os seguintes pares de valores definidos na string de comando: $conn = pg_connect("host=seuHost port=suaPorta tty=seuTTY options=suasOpcoes dbname=seuDB user=seuUsuario password=suaSenha"); A sintaxe anterior: $conn = pg_connect ("host", "porta", "opcoes", "tty", "nomebd") ficar obsoleta. Variveis de ambiente afetam o comportamento do servidor/cliente PostgreSQL. Por exemplo, o mdulo PostgreSQL ir procurar pela varivel de ambiente PGHOST quando o nome de host omitido na string de conexo. As variveis de ambiente suportadas variam de verso para verso. Vide o Manual de Programador do PostgreSQL (Programmers Manual, na seo libpq - Enviroment Variables) para maiores detalhes. Certifique-se que voc definiu as variveis de ambiente para o usurio apropriado. Use $_ENV ou getenv() para verificar se as variveis de ambiente esto disponveis para o processo atual. Exemplo 1. Definindo os parmetros padro
PGHOST=psgql.example.com PGPORT=7890 PGDATABASE=web-system PGUSER=web-user PGPASSWORD=secret PGDATESTYLE=ISO PGTZ=JST PGCLIENTENCODING=EUC-JP export PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD PGDATESTYLE PGTZ PGCLIENTENCODING

Constantes Predefinidas
As contantes abaixo so definidas por esta extenso e somente estaro disponveis quando a extenso foi compilada com o PHP ou carregada dinamicamente durante a execuo.
PGSQL_ASSOC (integer) PGSQL_NUM (integer) PGSQL_BOTH (integer)

Maurcio de Castro

PHP com PostgreSQL

PGSQL_CONNECTION_BAD (integer) PGSQL_CONNECTION_OK (integer) PGSQL_SEEK_SET (integer) PGSQL_SEEK_CUR (integer) PGSQL_SEEK_END (integer) PGSQL_ESCAPE_STRING (integer) PGSQL_ESCAPE_BYTEA (integer) PGSQL_EMPTY_QUERY (integer) PGSQL_COMMAND_OK (integer) PGSQL_TUPLES_OK (integer) PGSQL_COPY_OUT (integer) PGSQL_COPY_IN (integer) PGSQL_BAD_RESPONSE (integer) PGSQL_NONFATAL_ERROR (integer) PGSQL_FATAL_ERROR (integer)

Exemplos
A partir do PostgreSQL 7.1.0, voc pode armazenar at 1GB dentro de um campo do tipo texto. Em verses mais antigas, isto era limitado ao tamanho do bloco (o padro era 8KB e o mximo era 32KB, definido em tempo de compilao). Para usar a interface de objetos grandes (large objects), exigido que se encapsule as funes de objetos grandes em um bloco de transao. Um bloco de transao inicia-se com a declarao SQL BEGIN e, se a transao for vlida, termina com COMMIT ou END. Se a transao falhar, ela deve ser fechada com ROLLBACK ou ABORT. Exemplo 2. Usando Objetos Grandes (large objects)

Maurcio de Castro

PHP com PostgreSQL

<?php $database = pg_connect ("dbname=jacarta"); pg_query ($database, "begin"); $oid = pg_lo_create ($database); echo "$oid\n"; $handle = pg_lo_open ($database, $oid, "w"); echo "$handle\n"; pg_lo_write ($handle, "large object data"); pg_lo_close ($handle); pg_query ($database, "commit"); ?>

Voc no deve fechar a conexo com o servidor PostgreSQL antes de fechar o objeto grande.
ndice pg_affected_rows -- Retorna o nmero de registros afetados (linhas) pg_cancel_query -- Cancela uma consulta (query) assncrona pg_client_encoding -- Retorna a codificao do cliente pg_close -- Fecha uma conexo PostgreSQL pg_connect -- Abre uma conexo PostgreSQL pg_connection_busy -- Verifica se a conexo est ocupada ou no pg_connection_reset -- Reinicia uma conexo (reconecta) pg_connection_status -- Retorna o status da conexo pg_convert -- Converte os valores de um array associativo em uma declarao SQL apropriada. pg_copy_from -- Insere registros em uma tabela a partir de um array pg_copy_to -- Copia uma tabela em um array pg_dbname -- Retorna o nome do banco de dados pg_delete -- Remove registros. pg_end_copy -- Sincroniza com o backend PostgreSQL pg_escape_bytea -- Gera binrios para o tipo bytea pg_escape_string -- Gera string para o tipo text/char pg_fetch_all -- Retorna todas as linhas (registros) como um array pg_fetch_array -- Retorna uma linha (registro) como um array pg_fetch_assoc -- Retorna uma linha (registro) como um array pg_fetch_object -- Retorna uma linha (registro) como um objeto pg_fetch_result -- Retorna valores a partir de um recurso (resource) de resultado pg_fetch_row -- Retorna uma linha como um array enumerado pg_field_is_null -- Testa se o campo NULL pg_field_name -- Retorna o nome de um campo pg_field_num -- Retorna o nmero do campo referido pg_field_prtlen -- Retorna o comprimento impresso pg_field_size -- Retorna o tamanho de armazenamento interno de um campo pg_field_type -- Retorna o nome do tipo para o campo de nome correspondente pg_free_result -- Libera a memria usada pelo resultado pg_get_notify -- Ping database connection pg_get_pid -- Ping database connection pg_get_result -- Retorna o resultado de uma consulta (query) assncrona pg_host -- Retorna o nome da mquina associada a uma conexo pg_insert -- Insere um array na tabela pg_last_error -- Retorna a string da ltima mensagem de erro de uma conexo pg_last_notice -- Retorna a ltima notificao do servidor PostgreSQL

Maurcio de Castro

PHP com PostgreSQL

10

pg_last_oid -- Retorna o ltimo oid do objeto pg_lo_close -- Fecha um objeto grande (large object) pg_lo_create -- Cria um objeto grande (large object) pg_lo_export -- Exporta um objeto grande (large object) para um arquivo pg_lo_import -- Importa um objeto grande (large object) a partir de um arquivo pg_lo_open -- Abre um objeto grande (large object) pg_lo_read_all -- L um objeto grande (large object) inteiro e o envia diretamente para o navegador pg_lo_read -- L um objeto grande (large object) pg_lo_seek -- Procura uma posio em um objeto grande (large object) pg_lo_tell -- Retorna a posio atual de um objeto grande (large object) pg_lo_unlink -- Remove um objeto grande (large object) pg_lo_write -- Escreve em um objeto grande (large object) pg_metadata -- Retorna os metadados da tabela. pg_num_fields -- Retorna o nmero de campos pg_num_rows -- Retorna o nmero de linhas pg_options -- Retorna as opes associadas com a conexo pg_pconnect -- Abre uma conexo PostgreSQL persistente pg_ping -- Faz um ping na conexo com o banco de dados pg_port -- Retorna o nmero da porta associada com a conexo. pg_put_line -- Envia uma string terminada em NULL para o backend PostgreSQL pg_query -- Executa uma consulta (query) pg_result_error -- Retorna a mensagem de erro associada a um resultado pg_result_seek -- Altera a posio do ponteiro interno de um recurso (resource) de resultado pg_result_status -- Retorna o status do resultado da consulta (query) pg_select -- Seleciona registros. pg_send_query -- Envia uma consulta (query) assincrona pg_set_client_encoding -- Define a codificao do cliente pg_trace -- Habilita rastreamento em uma conexo PostgreSQL pg_tty -- Retorna o nome da tty associada com a conexo pg_unescape_bytea -- Faz escape binrio para o tipo bytea pg_untrace -- Desabilita o rastreamento de uma conexo PostgreSQL pg_update -- Atualiza uma tabela.

Maurcio de Castro

PHP com PostgreSQL

11

pg_affected_rows
(PHP 4 >= 4.2.0) pg_affected_rows -- Retorna o nmero de registros afetados (linhas)

Descrio
int pg_affected_rows ( resource result) pg_affected_rows() retorna o nmero de linhas (instncias/registros/linhas) afetados por consultas (queries) INSERT, UPDATE e DELETE executados por pg_query(). Se nenhuma linha foi afetada, ela retornar 0. Exemplo 1. pg_affected_rows()
<?php $result = pg_query ($conn, "INSERT INTO publisher VALUES ('Author')"); $cmdtuples = pg_affected_rows ($result); echo $cmdtuples . " linhas foram afetadas."; ?>

Nota: Esta funo costumava ser chamada de pg_cmdtuples().

Veja tambm pg_query() e pg_num_rows().

pg_cancel_query
(PHP 4 >= 4.2.0) pg_cancel_query -- Cancela uma consulta (query) assncrona

Descrio
bool pg_cancel_query ( resource connection) pg_cancel_query() cancela uma consulta (query) assncrona enviada por pg_send_query(). Voc no pode cancelar uma consulta executada por pg_query(). Veja tambm pg_send_query() e pg_connection_busy()

Maurcio de Castro

PHP com PostgreSQL

12

pg_client_encoding
(PHP 3 CVS only, PHP 4 >= 4.0.3) pg_client_encoding -- Retorna a codificao do cliente

Descrio
string pg_client_encoding ( [resource connection]) pg_client_encoding() retorna a codificao do cliente como uma string. A string de retorno pode ser SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250.
Nota: Esta funo requer PHP 4.0.3 ou maior e PostgreSQL 7.0 ou maior Se a libpq foi compilada sem suporte a codificao multibyte, pg_set_client_encoding() sempre retornar "SQL_ASCII". As codificaes suportadas dependem da verso do PostgreSQL. Vide o manual do PostgreSQL para mais detalhes sobre como habilitar o suporte a multibyte e outras codificaes. Esta funo costumava ser chamada pg_clientencoding().

Veja tambm pg_set_client_encoding().

pg_close
(PHP 3, PHP 4 ) pg_close -- Fecha uma conexo PostgreSQL

Descrio
bool pg_close ( resource connection) pg_close() fecha a conexo no persistente com servidor de banco de dados PostgreSQL associado ao recurso (resource) connection dado. Retorna TRUE em caso de sucesso ou FALSE em falhas.
Nota: Normalmente, o uso de pg_close() no necessrio j que conexes no persistentes abertas so automaticamente fechadas ao final do processamento do script.

Se existem recursos (resource) de objetos grandes (large objects) abertos na

Maurcio de Castro

PHP com PostgreSQL

13

conexo, no feche a conexo antes de fechar todos os recursos relacionados com estes objetos.

pg_connect
(PHP 3, PHP 4 ) pg_connect -- Abre uma conexo PostgreSQL

Descrio
resource pg_connect ( string connection_string) pg_connect() retorna um recurso (resource) de conexo que necessrio para outras funes para PostgreSQL. pg_connect() abre uma conexo com um servidor de banco de dados PostgreSQL especificado por connection_string. Retorna um recurso (resource) de conexo em caso de sucesso. Retorna FALSE se a conexo no pde ser estabelecida. connection_string deve ser uma string entre aspas duplas. Exemplo 1. Usando pg_connect
<?php $bdcon = pg_connect ("dbname=flavia"); //conecta a um banco de dados chamado "flavia" $bdcon2 = pg_connect ("host=localhost port=5432 dbname=flavia"); // conecta a um banco de dados chamado "flavia" em "localhost" na porta "5432" $bdcon3 = pg_connect ("host=ovelha port=5432 dbname=flavia user=ze password=buu"); //conecta a um banco de dados chamado "flavia" na mquina "ovelha" com um usurio e senha $con_string = "host=ovelha port=5432 dbname=flavia user=ze password=buu"; $bdcon4 = pg_connect ($con_string); //coneta a um banco de dados chamado "flavia" na mquina "ovelha" com um usurio e senha ?>

Os argumentos disponveis para connection_string incluem host, port, tty, options, dbname, user e password. Se uma segunda chamada feita para pg_connect() com a mesma connection_string, nenhuma nova conexo ser estabelecida, ao invs disso, o recurso (resource) de conexo da conexo que j est aberta ser retornado. Voc pode ter multiplas conexes para o mesmo banco de dados se voc usar diferentes strings de conexo.

Maurcio de Castro

PHP com PostgreSQL

14

A sintaxe antiga com parmetros mltiplos $con = pg_connect ("host", "port", "options", "tty", "dbname") se tornou obsoleta. Veja tambm pg_pconnect(), pg_close(), pg_host(), pg_port(), pg_tty(), pg_options() e pg_dbname().

pg_connection_busy
(PHP 4 >= 4.2.0) pg_connection_busy -- Verifica se a conexo est ocupada ou no

Descrio
bool pg_connection_busy ( resource connection) pg_connection_busy() retorna TRUE se a conexo est ocupada. Se estiver ocupada, significa que uma consulta (query) anterior ainda est sendo executada. Se pg_get_result() for chamada, ser bloqueada. Veja tambm pg_connection_status() e pg_get_result()

pg_connection_reset
(PHP 4 >= 4.2.0) pg_connection_reset -- Reinicia uma conexo (reconecta)

Descrio
bool pg_connection_reset ( resource connection) pg_connection_reset() reinicia uma conexo. til para recuperao de erros. Retorna TRUE em caso de sucesso ou FALSE em falhas. Veja tambm pg_connect(), pg_pconnect() e pg_connection_status()

Maurcio de Castro

PHP com PostgreSQL

15

pg_connection_status
(PHP 4 >= 4.2.0) pg_connection_status -- Retorna o status da conexo

Descrio
int pg_connection_status ( resource connection) pg_connection_status() retorna o status da conexo. Os status possveis so PGSQL_CONNECTION_OK e PGSQL_CONNECTION_BAD. Veja tambm pg_connection_busy().

pg_convert
(PHP 4 >= 4.3.0) pg_convert -- Converte os valores de um array associativo em uma declarao SQL apropriada.

Descrio
array pg_convert ( resource connection, string table_name, array assoc_array [, int options]) pg_convert() checa e converte assoc_array em uma declarao SQL apropriada.
Nota: Esta funo experimental.

Veja tambm pg_metadata()

Maurcio de Castro

PHP com PostgreSQL

16

pg_copy_from
(PHP 4 >= 4.2.0) pg_copy_from -- Insere registros em uma tabela a partir de um array

Descrio
bool pg_copy_from ( resource connection, string table_name, array rows [, string delimiter [, string null_as]]) pg_copy_from() insere registros em uma tabela a partir de rows. Usa o comando interno COPY FROM para inserir registros. Retorna TRUE em caso de sucesso ou FALSE em falhas. Veja tambm pg_copy_to()

pg_copy_to
(PHP 4 >= 4.2.0) pg_copy_to -- Copia uma tabela em um array

Descrio
int pg_copy_to ( resource connection, string table_name [, string delimiter [, string null_as]]) pg_copy_to() copia uma tabela em um array. Utiliza internamente o comando SQL COPY TO para inserir os registros. Seu retorno o array resultante. Caso haja falhas, FALSE retornado. Veja tambm pg_copy_from()

Maurcio de Castro

PHP com PostgreSQL

17

pg_dbname
(PHP 3, PHP 4 ) pg_dbname -- Retorna o nome do banco de dados

Descrio
string pg_dbname ( resource connection) pg_dbname() retorna o nome do banco de dados para um dado recurso (resource) de conexo connection. Retorna FALSE, se connection no um recurso de conexo PostgreSQL vlido.

pg_delete
(PHP 4 >= 4.3.0) pg_delete -- Remove registros.

Descrio
long pg_delete ( resource connection, string table_name, array assoc_array [, int options]) pg_delete() remove registros que seguem a condio especificada por assoc_array que tem o formato campo => valor. Se options for especificado, pg_convert() aplicada a assoc_array com a opo especificada. Exemplo 1. pg_delete
<?php $db = pg_connect ('dbname=flavia'); // Isto seguro, j que $_POST convertido automaticamente $res = pg_delete($db, 'post_log', $_POST); if ($res) { echo "Dados de POST foram removidos: $res\n"; } else { echo "O usurio deve ter enviado parmetros invlidos\n"; } ?>

Nota: Esta funo experimental.

Veja tambm pg_convert()

Maurcio de Castro

PHP com PostgreSQL

18

pg_end_copy
(PHP 4 >= 4.0.3) pg_end_copy -- Sincroniza com o backend PostgreSQL

Descrio
bool pg_end_copy ( [resource connection]) pg_end_copy() sincroniza o frontend PostgreSQL (geralmente um processo de servidor HTTP) com o servidor PostgreSQL depois de fazer uma operao de cpia usando pg_put_line(). pg_end_copy() deve ser chamada, caso contrrio o servidor PostgreSQL pode perder a sincronia com o frontend fazendo com que o servidor gere um erro. Retorna TRUE em caso de sucesso ou FALSE em falhas. Para maiores detalhes e um exemplo, veja tambm pg_put_line().

pg_escape_bytea
(PHP 4 >= 4.2.0) pg_escape_bytea -- Gera binrios para o tipo bytea

Descrio
string pg_escape_bytea ( string data) pg_escape_bytea() gera uma string do tipo bytea. Retorna uma string com escapes.
Nota: Quando voc usa SELECT bytea type, o PostgreSQL retorna valores de byte octais prefixados por \ (ex.: \032). Usurios devem converter de volta para binrios por si mesmos. Esta funo exige PostgreSQL 7.2 ou superior. Com PostgreSQL 7.2.0 e 7.2.1, o tipo de dados bytea deve ser criado quando voc habilita o suporte a multi-byte. Por exemplo, INSERT INTO tabela_teste (imagem) VALUES ('$imagem_escaped'::bytea); PostgreSQL 7.2.2 ou superior no precisa de coero (cast). A exceo quando a codificao de caracteres do cliente e do backend no combinam, ento pode haver erro de fluxo de multi-byte. O usurio deve fazer a coero (cast) para bytea para evitar este erro.

Maurcio de Castro

PHP com PostgreSQL

19

Verses do PostgreSQL mais novas suportaro a funo unescape. Suporte para a funo interna unescape ser adicionada assim que estiver disponvel.

Veja tambm pg_escape_string()

pg_escape_string
(PHP 4 >= 4.2.0) pg_escape_string -- Gera string para o tipo text/char

Descrio
string pg_escape_string ( string data) pg_escape_string() gera strings do tipo text/chat. Retorna uma string com escapes para PostgreSQL. O uso desta funo recomendado no lugar de addslashes().
Nota: Esta funo exige PostgreSQL 7.2 ou superior.

Veja tambm pg_escape_bytea()

pg_fetch_all
(PHP 4 >= 4.3.0) pg_fetch_all -- Retorna todas as linhas (registros) como um array

Descrio
array pg_fetch_all ( resource result [, int row]) pg_fetch_all() retorna uma array que contm todas as linhas (registros) do recurso (resourse) de resultado. Retorna FALSE, se no existem mais registros. Veja tambm pg_fetch_row(), pg_fetch_array(), pg_fetch_object() e

pg_fetch_result().

Maurcio de Castro

PHP com PostgreSQL

20

Exemplo 1. Retornando linhas (registros) no PostgreSQL


<?php $conn = pg_pconnect ("dbname=escritor"); if (!$conn) { echo "Ocorreu um erro!\n"; exit; } $result = pg_query ($conn, "SELECT * FROM authors"); if (!$result) { echo "Ocorreu um erro!\n"; exit; } $arr = pg_fetch_all ($result, 0, PGSQL_NUM); var_dump($arr); ?>

pg_fetch_array
(PHP 3>= 3.0.1, PHP 4 ) pg_fetch_array -- Retorna uma linha (registro) como um array

Descrio
array pg_fetch_array ( resource result [, int row [, int result_type]]) pg_fetch_array() retorna um array que corresponde linha (registro). Retorna FALSE se no existem mais linhas. pg_fetch_array() uma verso extendida de pg_fetch_row(). Alm de armazenar os dados em ndices numricos (ndice) no array resultante, tambm armazena os dados em chaves associativas (nome do campo) por padro. row o nmero da linha (registro) a ser recuperado. A primeira linha 0. result_type um parmetro opcional que controla como o valor de retorno iniciado. result_type uma constante e pode ter os seguintes valores: PGSQL_ASSOC, PGSQL_NUM, e PGSQL_BOTH. pg_fetch_array() retorna um array associativo que tem o nome de campo como chave para PGSQL_ASSOC. ndice de campo como chave com PGSQL_NUM e ambos nome/ndice numrico como chave com PGSQL_BOTH. O valor padro PGSQL_BOTH.
Nota: O parmetro result_type foi adicionado no PHP 4.0.

Maurcio de Castro

PHP com PostgreSQL

21

pg_fetch_array() NO significativamente mais lenta que pg_fetch_row(), e ainda fornece uma significativa facilidade de uso. Veja tambm pg_fetch_row(), pg_fetch_object() e pg_fetch_result().

Exemplo 1. Retornando linhas (registros) no PostgreSQL


<?php $conn = pg_pconnect ("dbname=publicar"); if (!$conn) { echo "Um erro ocorreu.\n"; exit; } $result = pg_query ($conn, "SELECT * FROM autores"); if (!$result) { echo "Um erro ororreu.\n"; exit; } $arr = pg_fetch_array ($result, 0, PGSQL_NUM); echo $arr[0] . " <- array\n"; $arr = pg_fetch_array ($result, 1, PGSQL_ASSOC); echo $arr["autor"] . " <- array\n"; ?>

Nota: A partir do PHP 4.1.0, row tornou-se opcional. A chamada pg_fetch_array() ir incrementar o contador de linha interno em 1.

pg_fetch_assoc
(PHP 4 >= 4.3.0) pg_fetch_assoc -- Retorna uma linha (registro) como um array

Descrio
array pg_fetch_assoc ( resource result [, int row]) pg_fetch_assoc() retorna um array associativo que corresponde linha (registro) recuperado. Retorna FALSE, se no houver mais registros. pg_fetch_assoc() uma verso extendida de pg_fetch_row(). Alm de guardar em ndices numricos, no array resultante, tambm guarda dados em arrays com chaves associativas (nome do campo) por padro. row o nmero da linha (registro) a ser recuperado. A primeira linha 0. pg_fetch_assoc() NO significativamente mais lenta que pg_fetch_row(), e

Maurcio de Castro

PHP com PostgreSQL

22

ainda fornece uma significativa facilidade de uso. Veja tambm pg_fetch_row(), pg_fetch_array(), pg_fetch_object() e

pg_fetch_result().

Exemplo 1. Retornando linhas (registros) no PostgreSQL


<?php $conn = pg_pconnect ("dbname=revista"); if (!$conn) { echo "Ocorreu um erro.\n"; exit; } $result = pg_query ($conn, "SELECT * FROM authors"); if (!$result) { echo "Ocorreu um erro.\n"; exit; } $arr = pg_fetch_assoc ($result, 1, PGSQL_ASSOC); echo $arr["author"] . " <array\n"; ?>

pg_fetch_object
(PHP 3>= 3.0.1, PHP 4 ) pg_fetch_object -- Retorna uma linha (registro) como um objeto

Descrio
objeto pg_fetch_object ( resource result, int row [, int result_type]) pg_fetch_object() retorna um objeto com propriedades que correspondem linha recuperada. Retorna FALSE se no existem mais linhas ou no caso de erro. pg_fetch_object() similar a pg_fetch_array(), com uma diferena - um objeto retornado, ao invs de um array. Indiretamente, isto significa que voc pode acessar os dados somente atravs dos nomes de campos, e no por seus ndices (nmeros so nomes invlidos de propriedades). row o nmero da linha (registro) a ser recuperada. A primeira linha 0.

Maurcio de Castro

PHP com PostgreSQL

23

Em termos de performance, a funo idntica a pg_fetch_array(), e quase to rpida quanto pg_fetch_row() (a diferena insignificante).
Nota: A partir do PHP 4.1.0, row opcional. A partir do PHP 4.3.0, result_type tem PGSQL_ASSOC como valor padro, enquanto em outras verses mais antigas o padro PGSQL_BOTH. No h utilidade para a propriedade numrica, j que nomes de propriedades numricas so invlidas em PHP. O parmetro result_type dever ser removido em verses futuras.

Veja pg_fetch_result().

tambm

pg_query(),

pg_fetch_array(),

pg_fetch_row()

Exemplo 1. Postgres fetch object


<?php $database = "verlag"; $db_conn = pg_connect ("host=localhost port=5432 dbname=$database"); if (!$db_conn): ?> <H1>Falha ao conectar com o banco de dados PostgreSQL <?php echo $database ?></H1> <?php exit; endif; $qu = pg_query ($db_conn, "SELECT * FROM verlag ORDER BY autor"); $row = 0; // postgresql precisa de um contador de linha, outros dbs talvez no precisem while ($data = pg_fetch_object ($qu, $row)) { echo $data->autor." ("; echo $data->jahr ."): "; echo $data->titel."<BR>"; $row++; } ?> <PRE> <?php $fields[] = Array ("autor", "Autor"); $fields[] = Array ("jahr", " Ano"); $fields[] = Array ("titel", " Ttulo"); $row= 0; while ($data = pg_fetch_object ($qu, $row)) { echo "----------\n"; reset ($fields); while (list (,$item) = each ($fields)): echo $item[1].": ".$data->$item[0]."\n"; endwhile; $row++; } echo "----------\n"; ?> </PRE> <?php pg_free_result ($qu); pg_close ($db_conn); ?>

Maurcio de Castro

PHP com PostgreSQL

24

Nota: A partir do PHP 4.1.0, row tornou-se opcional. Ao chamar pg_fetch_object() o contador de linhas interno ser acrescentado de 1.

pg_fetch_result
(PHP 4 >= 4.2.0) pg_fetch_result -- Retorna valores a partir de um recurso (resource) de resultado

Descrio
misto pg_fetch_result ( resource result, int row, mixed field) pg_fetch_result() retorna valores a partir de um recurso (resource) de resultado result criado por pg_query(). row um inteiro. field um nome de campo (string) ou um ndice de campo (inteiro). row e field especificam que clula da tabela deve ser recuperada. A numerao de linhas comea de 0. Ao invs de nomear o campo, voc pode usar o ndice numrico de campo sem aspas. ndices de campo iniciam-se em 0. PostgreSQL tem muitos tipos internos mas apenas os tipos bsicos so suportados. Todas as formas de tipo integer so retornadas como valores integer. Todas as formas de tipos reais (ponto flutuante) so retornados como valores float. Boolean retornado como "t" ou "f". Todos os outros tipos, incluindo arrays, so retornados como strings formatadas na mesma maneira padro que o PostgreSQL retornaria com o programa psql.

pg_fetch_row
(PHP 3>= 3.0.1, PHP 4 ) pg_fetch_row -- Retorna uma linha como um array enumerado

Descrio
array pg_fetch_row ( resource result, int row) pg_fetch_row() retorna uma linha de dados a partir do resultado associado com o recurso (resource) de resultado result. A linha (registro) recuperada como um array. Cada coluna do resultado armazenada em um ndice do array, iniciando-se no ndice 0.

Maurcio de Castro

PHP com PostgreSQL

25

Retorna um array que corresponde linha carregada, ou FALSE se no existem mais linhas. Veja pg_fetch_result(). Exemplo 1. Retornando linhas (registros) no PostgreSQL
<?php $conn = pg_pconnect ("dbname=editora"); if (!$conn) { echo "Um erro ocorreu.\n"; exit; } $result = pg_query ($conn, "SELECT * FROM autores"); if (!$result) { echo "Um erro ocorreu.\n"; exit; } $num = pg_num_rows($result); for ($i=0; $i < $num; $i++) { $r = pg_fetch_row($result, $i); for ($j=0; $j < count($r); $j++) { echo "$r[$j]&nbsp;"; } echo "<BR>"; } ?>

tambm

pg_query(),

pg_fetch_array(),

pg_fetch_object()

Nota: A partir do PHP 4.1.0, row tornou-se opcional. Ao chamar pg_fetch_row(), o contador de linha interno ser incrementado em 1.

pg_field_is_null
(PHP 4 >= 4.2.0) pg_field_is_null -- Testa se o campo NULL

Descrio
int pg_field_is_null ( resource result, int row, mixed field) pg_field_is_null() testa se um campo NULL ou no. Retorna 1 se o campo na linha dada NULL. Retorna 0 se o campo na linha dada NO NULL. O campo pode ser especificado como um ndice de coluna (nmero) ou como o nome de um campo (string). A numerao de linhas inicia-se em 0.

Maurcio de Castro

PHP com PostgreSQL

26

Nota: Esta funo era chamada pg_fieldisnull().

pg_field_name
(PHP 4 >= 4.2.0) pg_field_name -- Retorna o nome de um campo

Descrio
string pg_field_name ( resource result, int field_number) pg_field_name() retorna o nome do campo ocupando o campo de nmero igual a field_number no recurso (resource) de resultado result. A numerao de campo inicia-se em 0.
Nota: Esta funo era chamada pg_fieldname().

Veja tambm pg_field_num().

pg_field_num
(PHP 4 >= 4.2.0) pg_field_num -- Retorna o nmero do campo referido

Descrio
int pg_field_num ( resource result, string field_name) pg_field_num() ir retornar o nmero da vaga (slot) da coluna (campo) que corresponde a field_name no recurso (resource) de resultado result. A numerao de campo inicia-se em 0. Esta funo retornar -1 em caso de erro.
Nota: Esta funo era chamada pg_fieldnum().

Veja tambm pg_field_name().

Maurcio de Castro

PHP com PostgreSQL

27

pg_field_prtlen
(PHP 4 >= 4.2.0) pg_field_prtlen -- Retorna o comprimento impresso

Descrio
int pg_field_prtlen ( resource result, int row_number, string field_name) pg_field_prtlen() retorna o comprimento atual impresso (nmero de caracteres) de um valor especificado em um recurso (resource) de resultado result. A numerao de linha inicia-se em 0. Esta funo retornar -1 em caso de erro.
Nota: Esta funo era chamada pg_field_prtlen().

Veja tambm pg_field_size().

pg_field_size
(PHP 4 >= 4.2.0) pg_field_size -- Retorna o tamanho de armazenamento interno de um campo

Descrio
int pg_field_size ( resource result, int field_number) pg_field_size() retorna o tamanho de armazenamento interno (em bytes) do nmero de campo do recurso (resource) de resultado result. A numerao de campo inicia-se em 0. Um campo de tamanho -1 indica um campo de tamanho varivel. Esta funo retornar FALSE em caso de erro.
Nota: Esta funo era chamada pg_fieldsize().

Veja tambm pg_field_len() e pg_field_type().

pg_field_type
(PHP 4 >= 4.2.0)

Maurcio de Castro

PHP com PostgreSQL

28

pg_field_type -- Retorna o nome do tipo para o campo de nome correspondente

Descrio
string pg_field_type ( resource result, int field_number) pg_field_type() retorna uma string contendo o nome do tipo do campo de nmero field_number dado no recurso (resource) de resultado result. A numerao de campo inicia-se em 0.
Nota: Esta funo era chamada pg_fieldtype().

Veja tambm pg_field_len() e pg_field_name().

pg_free_result
(PHP 4 >= 4.2.0) pg_free_result -- Libera a memria usada pelo resultado

Descrio
bool pg_free_result ( resource result) pg_free_result() precisa ser usada apenas se voc est preocupado em usar muita memria enquanto seu script est rodando. Todos os resultados sero liberados da memria automaticamente assim que o script terminar de executar. Mas, se voc tem certeza que no precisar mais dos dados do resultado em um script, voc pode chamar pg_free_result() com o recurso (resource) de resultado result como argumento e a memria ocupada pelo resultado associado ser liberada. Retorna TRUE em caso de sucesso ou FALSE em falhas.
Nota: Esta funo era chamada pg_field_len().

Veja tambm pg_query().

Maurcio de Castro

PHP com PostgreSQL

29

pg_get_notify
(PHP 4 >= 4.3.0) pg_get_notify -- Ping database connection

Description
array pg_get_notify ( resource connection [, int result_type]) pg_get_notify() gets notify message sent by NOTIFY SQL command. To recieve notify messages, LISTEN SQL command must be issued. If there is notify message on the connection, array contains message name and backend PID is returned. If there is no message, FALSE is returned. See also pg_get_pid()

Exemplo 1. PostgreSQL NOTIFY message


<?php $conn = pg_pconnect ("dbname=publisher"); if (!$conn) { echo "An error occured.\n"; exit; } // Listen 'author_updated' message from other processes pq_query($conn, 'LISTEN author_updated;'); $notify = pg_get_notify($conn); if (!$notify) print("No messages\n"); else print_r($notify); ?>

pg_get_pid
(PHP 4 >= 4.3.0) pg_get_pid -- Ping database connection

Description
int pg_get_pid ( resource connection)

Maurcio de Castro

PHP com PostgreSQL

30

pg_get_pid() gets backend (database server process) PID. PID is useful to check if NOTIFY message is sent from other process or not. See also pg_get_notify()

Exemplo 1. PostgreSQL backend PID


<?php $conn = pg_pconnect ("dbname=publisher"); if (!$conn) { echo "An error occured.\n"; exit; } // Backend process PID. Use PID with pg_get_notify() $pid = pg_get_pid($conn); ?>

pg_get_result
(PHP 4 >= 4.2.0) pg_get_result -- Retorna o resultado de uma consulta (query) assncrona

Descrio
resource pg_get_result ( [resource connection]) pg_get_result() retorna o recurso (resource) de resultado de uma consulta (query) executada por ps_send_query(). pg_send_query() pode enviar mltiplas consultas (queries) ao servidor PostgreSQL e pg_get_result() usada para carregar os resultados das consultas, um por um. Retorna o recurso (resource) de resultado. Se no houverem mais resultados, retorna FALSE.

pg_host
(PHP 3, PHP 4 ) pg_host -- Retorna o nome da mquina associada a uma conexo

Descrio
string pg_host ( resource connection)

Maurcio de Castro

PHP com PostgreSQL

31

pg_host() retorna o nome da mquina com a qual o recurso (resource) de conexo connection est conectado. Veja tambm pg_connect() e pg_pconnect().

pg_insert
(PHP 4 >= 4.3.0) pg_insert -- Insere um array na tabela

Descrio
bool pg_insert ( resource connection, string table_name, array assoc_array [, int options]) pg_insert() insere o array assoc_array, que contm os pares campo => valor, na tabela especificada pelo parmetro table_name. Se options for especificado, pg_convert() ser aplicada assoc_array com a opo especificada. Exemplo 1. pg_insert
<?php $db = pg_connect ('dbname=meubanco'); // Isto seguro uma vez que $_POST convertido automaticamente $res = pg_insert($db, 'post_log', $_POST); if ($res) { echo "Dados POST arquivados com sucesso\n"; } else { echo "O usurio deve ter inserido entradas invlidas\n"; } ?>

Nota: Esta funo experimental.

Veja tambm pg_convert()

pg_last_error
(PHP 4 >= 4.2.0) pg_last_error -- Retorna a string da ltima mensagem de erro de uma conexo

Descrio
string pg_last_error ( resource connection)

Maurcio de Castro

PHP com PostgreSQL

32

pg_last_error() retorna a ltima mensagem de erro para a conexo representada por connection. As mensagens de erro podem ser sobrescritas por chamadas internas ao PostgreSQL(libpq). Se mltiplos erros ocorrerem dentro de um mdulo de funo do PostgreSQL, pode no retornar a mensagem de erro correta. Use pg_result_error(), pg_result_status() e pg_connection_status() para um melhor tratamento de erros.
Nota: Esta funo era chamada pg_errormessage().

Veja tambm pg_result_error().

pg_last_notice
(PHP 4 >= 4.0.6) pg_last_notice -- Retorna a ltima notificao do servidor PostgreSQL

Descrio
string pg_last_notice ( resource connection) pg_last_notice() retorna a ltima notificao do servidor PostgreSQL especificada por connection. O servidor PostgreSQL envia notificaes em diversas situaes, por exemplo, se as transaes no puderem continuar. Com pg_last_notice() voc pode evitar a chamada de consultas (queries) inteis, checando quando a notificao est relacionada ou no com a transao. Ateno Esta funo EXPERIMENTAL e ainda no est completamente implementada. pg_last_notice() foi adicionada no PHP 4.0.6. Entretanto o PHP 4.0.6 tem problemas com a manipulao de mensagens. O uso do mdulo PostgreSQL com o PHP 4.0.6 no recomendada, mesmo se voc no estiver usando pg_last_notice(). Esta funo est totalmente implementada no PHP 4.3.0. Verses do PHP mais recentes que a 4.3.0 ignoram o parmetro de conexo com o banco de dados.

Maurcio de Castro

PHP com PostgreSQL

33

O rastreamento de notificaes pode ser definido como opcional definindo 1 para a diretiva pgsql.ignore_notice do PHP 4.3.0. O arquivamento (log) de mensagems pode ser pode ser definido como opcional mudando para 0 a diretiva pgsql.log_notice no PHP 4.3.0. A no ser que pgsql.ignore_notice estiver definida para 0, notificaes no podem ser arquivadas. Veja tambm pg_query() e pg_last_error().

pg_last_oid
(PHP 4 >= 4.2.0) pg_last_oid -- Retorna o ltimo oid do objeto

Descrio
int pg_last_oid ( resource result) pg_last_oid() usado para recuperar o oid designado a uma linha (registro) se o recurso (resource) de resultado usado a partir do ltimo comando enviado atravs de pq_query() se este comando era um INSERT do SQL. Retorna um inteiro positivo se havia um oid vlido. Retorna FALSE se um erro ocorrer ou o ltimo comando enviado atravs de pg_query() no foi INSERT ou se o INSERT falhou. O campo OID tornou-se opcional a partir do PostgreSQL 7.2. Quando um campo OID no definido em uma tabela, o programador deve usar pg_result_status() para checar se o registro foi inserido com sucesso ou no.
Nota: Esta funo era chamada pg_getlastoid().

Veja tambm pg_query() e pg_result_status()

Maurcio de Castro

PHP com PostgreSQL

34

pg_lo_close
(PHP 4 >= 4.2.0) pg_lo_close -- Fecha um objeto grande (large object)

Descrio
bool pg_lo_close ( resource large_object) pg_lo_close() fecha um Objeto Grande (Large Object, da vem o "lo" que integra o nome da funo). large_object um recurso (resource) para o objeto grande gerado a partir de pg_lo_open(). Para usar a interface de objetos grandes (lo), necessrio encapsul-lo em um bloco de transao.
Nota: Esta funo era chamada pg_loclose().

Veja tambm pg_lo_open(), pg_lo_create() e pg_lo_import().

pg_lo_create
(PHP 4 >= 4.2.0) pg_lo_create -- Cria um objeto grande (large object)

Descrio
int pg_lo_create ( resource connection) pg_lo_create() cria um Objeto Grande (Large Object) e retorna o seu oid. connection especifica uma conexo a um banco de dados vlida aberta por pg_connect() ou pg_pconnect(). Os modos de acesso INV_READ, INV_WRITE e INV_ARCHIVE no so suportados, o objeto criado sempre com acesso a leitura e escrita. INV_ARCHIVE foi removido do prprio PostgreSQL (a partir da 6.3). Retorna o oid do objeto. Retorna FALSE se um erro ocorrer. Para usar a interface de objetos grandes (lo), necessrio encapsul-lo em um bloco de transao.

Maurcio de Castro

PHP com PostgreSQL

35

Nota: Esta funo era chamada pg_locreate().

pg_lo_export
(PHP 4 >= 4.2.0) pg_lo_export -- Exporta um objeto grande (large object) para um arquivo

Descrio
bool pg_lo_export ( int oid, string pathname [, resource connection]) O argumento oid especifica o oid do objeto grande (large object) a exportar e o argumento pathname especifica o caminho at o arquivo. Retorna FALSE se um erro ocorrer, caso contrrio retorna TRUE. Para usar a interface de objetos grandes (lo), necessrio encapsul-lo em um bloco de transao.
Nota: Esta funo era chamada pg_loexport().

Veja tambm pg_lo_import().

pg_lo_import
(PHP 4 >= 4.2.0) pg_lo_import -- Importa um objeto grande (large object) a partir de um arquivo

Descrio
int pg_lo_import ( [resource connection, string pathname]) Em verses anteriores a 4.2.0, a sintaxe desta funo diferente, veja a seguinte definio: int pg_lo_import ( string pathname [, resource connection]) O argumento pathname especifica o caminho do arquivo a ser importado como um objeto grande (large object). Retorna FALSE se um erro ocorrer, caso contrrio, retorna o oid do objeto recm criado.

Maurcio de Castro

PHP com PostgreSQL

36

Para usar a interface de objetos grandes (lo) necessrio encapsul-lo em um bloco de transao.
Nota: Quando o safe-mode est ativo, o PHP verifica se o(s) arquivo(s) e/ou diretrio(s) que sero afetados por esta operao tem o mesmo UID (proprietrio) do script que est sendo executado. Nota: Esta funo era chamada pg_loimport().

Veja tambm pg_lo_export() e pg_lo_open().

pg_lo_open
(PHP 4 >= 4.2.0) pg_lo_open -- Abre um objeto grande (large object)

Descrio
resource pg_lo_open ( resource connection, int oid, string mode) pg_lo_open() abre um Objeto Grande (Large Object em ingls, da o "lo"). O recurso (resource) encapsula informaes sobre a conexo. oid especifica um oid de objeto grande vlido e o parmetro mode pode ser "r", "w" ou "rw". A funo retorna FALSE se houver algum erro. Ateno No feche a conexo com o banco de dados sem antes fechar a conexo com o objeto grande. Para usar a interface de objetos grandes (lo) necessrio encapsul-lo em um bloco de transao.
Nota: Esta funo era chamada pg_loopen().

Veja tambm pg_lo_close() e pg_lo_create().

pg_lo_read_all
(PHP 4 >= 4.2.0) pg_lo_read_all -- L um objeto grande (large object) inteiro e o envia

Maurcio de Castro

PHP com PostgreSQL

37

diretamente para o navegador

Descrio
int pg_lo_read_all ( resource large_object) pg_lo_read_all() l um objeto grande (large object) e passa-o diretamente para o navegador depois de enviar todos os cabealhos pendentes. A inteno principal enviar dados binrios como imagens ou som. Retorna o nmero de bytes lidos ou FALSE se ocorrer algum erro. Para usar a interface de objetos grandes (lo) necessrio encapsul-lo em um bloco de transao.
Nota: Esta funo era chamada pg_loreadall().

Veja tambm pg_lo_read().

pg_lo_read
(PHP 4 >= 4.2.0) pg_lo_read -- L um objeto grande (large object)

Descrio
string pg_lo_read ( resource large_object, int len) pg_lo_read() l o nmero de bytes equivalente ao valor de len de um objeto grande (large object) e retorna-o como uma string. large_object especifica um recurso (resource) vlido de objeto e len especifica o tamanho mximo permitido do segmento do objeto grande. Retorna FALSE se algum erro acontecer. Para usar a interface de objetos grandes (lo) necessrio encapsul-lo em um bloco de transao.
Nota: Esta funo era chamada pg_loread().

Veja tambm pg_lo_read_all().

Maurcio de Castro

PHP com PostgreSQL

38

pg_lo_seek
(PHP 4 >= 4.2.0) pg_lo_seek -- Procura uma posio em um objeto grande (large object)

Descrio
bool pg_lo_seek ( resource large_object, int offset [, int whence]) pg_lo_seek() procura uma posio em um recurso (resource) de um objeto grande (large objet). whence pode ser PGSQL_SEEK_SET, PGSQL_SSEK_CUR ou PGSQL_SEEK_END. Veja tambm pg_lo_tell().

pg_lo_tell
(PHP 4 >= 4.2.0) pg_lo_tell -- Retorna a posio atual de um objeto grande (large object)

Descrio
int pg_lo_tell ( resource large_object) pg_lo_tell() retorna a posio atual (deslocamento a partir do incio do objeto grande). Veja tambm pg_lo_seek().

pg_lo_unlink
(PHP 4 >= 4.2.0) pg_lo_unlink -- Remove um objeto grande (large object)

Descrio
bool pg_lo_unlink ( resource connection, int oid) pg_lo_unlink() remove um objeto grande (large object) com um determinado

Maurcio de Castro

PHP com PostgreSQL

39

oid. Retorna TRUE em caso de sucesso ou FALSE em falhas. Para usar a interface de objetos grandes (lo) necessrio encapsul-lo em um bloco de transao.
Nota: Esta funo era chamada pg_lo_unlink().

Veja tambm pg_lo_create() e pg_lo_import().

pg_lo_write
(PHP 4 >= 4.2.0) pg_lo_write -- Escreve em um objeto grande (large object)

Descrio
int pg_lo_write ( resource large_object, string data) pg_lo_write() escreve em um objeto grande (large object) a partir de uma varivel data e retorna o nmero de bytes escritos, ou FALSE em caso de erro. large_object um recurso (resource) de objeto grande criado a partir de pg_lo_open(). Para usar a interface de objetos grandes (lo) necessrio encapsul-lo em um bloco de transao.
Nota: Esta funo era chamada pg_lo_write().

Veja tambm pg_lo_create() e pg_lo_open().

pg_metadata
(no version information, might be only in CVS) pg_metadata -- Retorna os metadados da tabela.

Descrio
array pg_metadata ( resource connection, string table_name) pg_metadata() retorna a definio da tabela com o nome igual ao valor de table_name como um array. Se houver algum erro, retorna FALSE.

Maurcio de Castro

PHP com PostgreSQL

40

Nota: Esta funo experimental.

Veja tambm pg_convert()

pg_num_fields
(PHP 4 >= 4.2.0) pg_num_fields -- Retorna o nmero de campos

Descrio
int pg_num_fields ( resource result) pg_num_fields() retorna o nmero de campos (colunas) do recurso (resource) de resultado result. O argumento um recurso (resource) de resultado criado a partir de pg_query(). Esta funo ir retornar -1 em caso de erro.
Nota: Esta funo era chamada pg_numfields().

Veja tambm pg_num_rows() e pg_affected_rows().

pg_num_rows
(PHP 4 >= 4.2.0) pg_num_rows -- Retorna o nmero de linhas

Descrio
int pg_num_rows ( resource result) pg_num_rows() ir retornar o nmero de linhas do recurso de resultado result. result um recurso (resource) de resultado de consulta (query) feito por pg_query(). Esta funo retornar -1 em caso de erro.
Nota: Use pg_affected_rows() para obter o nmero de linhas afetadas por consultas do tipo INSERT, UPDATE e DELETE. Nota: Esta funo era chamada pg_numrows().

Veja tambm pg_num_fields() e pg_affected_rows().

Maurcio de Castro

PHP com PostgreSQL

41

pg_options
(PHP 3, PHP 4 ) pg_options -- Retorna as opes associadas com a conexo

Descrio
string pg_options ( resource connection) pg_options() retornar uma string contendo as opes especificadas no recurso (resource) de conexo PostgreSQL connection.

pg_pconnect
(PHP 3, PHP 4 ) pg_pconnect -- Abre uma conexo PostgreSQL persistente

Descrio
int pg_pconnect ( string connection_string) pg_pconnect() abre uma conexo a um banco de dados PostgreSQL. Retorna um recurso (resource) de conexo que necessrio para outras funes PostgreSQL. Para uma descrio do parmetro connection_string veja pg_connect(). Para habilitar uma conexo persistente, a diretiva pgsql.allow_persistent do php.ini deve ser definida como "On" (que o padro). O nmero mximo de conexes persistentes pode ser definida com a diretiva pgsql.max_persistent do php.ini (o padro -1 para sem limite). O nmero total de conexes pode ser definido com a diretiva pgsql.max_links do php.ini. pg_close() no fechar links persistentes gerados por pg_pconnect(). Veja tambm pg_connect().

Maurcio de Castro

PHP com PostgreSQL

42

pg_ping
(PHP 4 >= 4.3.0) pg_ping -- Faz um ping na conexo com o banco de dados

Description
array pg_ping ( resource connection) pg_ping() faz um ping na conexo com o banco de dados, tenta reconectar se a conexo foi quebrada. Retorna TRUE se a conexo est ativa, do contrrio, retorna FALSE. Veja tambm pg_connection_status() e pg_connection_reset().

Exemplo 1. Testando uma conexo PostgreSQL


<?php $conn = pg_pconnect ("dbname=publicacao"); if (!$conn) { echo "Ocorreu um erro.\n"; exit; } if (!pg_ping($conn)) die("Conexo quebrada\n"); ?>

pg_port
(PHP 3, PHP 4 ) pg_port -- Retorna o nmero da porta associada com a conexo.

Descrio
int pg_port ( resource connection) pg_port() retorna o nmero da porta a qual o recurso de conexo PostgreSQL connection est conectado.

pg_put_line
(PHP 4 >= 4.0.3)

Maurcio de Castro

PHP com PostgreSQL

43

pg_put_line -- Envia uma string terminada em NULL para o backend PostgreSQL

Descrio
bool pg_put_line ( [resource connection, string data]) pg_put_line() envia uma string terminada em NULL para o servidor backend PostgreSQL. Isso til, por exemplo, para a insero de dados em uma tabela em alta velocidade, iniciada atravs de uma operao de cpia PostgreSQL. O caractere NULL final adicionado automaticamente. Retorna TRUE em caso de sucesso ou FALSE em falhas.
Nota: A aplicao deve enviar os dois caracteres "\." explicitamente na ltima linha para indicar ao backend que ela terminou de enviar seus dados.

Veja tambm pg_end_copy(). Exemplo 1. Insero de dados na tabela em alta velocidade


<?php $conn = pg_pconnect ("nomebd=meubanco"); pg_query($conn, "create table bar (a int4, b char(16), d float8)"); pg_query($conn, "copy bar from stdin"); pg_put_line($conn, "3\tola mundo\t4.5\n"); pg_put_line($conn, "4\ttchau mundo\t7.11\n"); pg_put_line($conn, "\\.\n"); pg_end_copy($conn); ?>

pg_query
(PHP 4 >= 4.2.0) pg_query -- Executa uma consulta (query)

Descrio
resource pg_query ( resource connection, string query) pg_query() retorna um recurso (resource) de resultado da consulta (query) se a consulta pde ser executada. Retorna FALSE em caso de falha ou se a conexo no uma conexo vlida. Detalhes sobre os erros podem ser recuperados usando a funo pg_last_error() se a conexo vlida. pg_last_error() envia uma declarao SQL para o banco de dados PostgreSQL especificado pelo recurso de conexo connection. connection deve ser uma conexo vlida que foi criado por pg_connect(). O valor de

Maurcio de Castro

PHP com PostgreSQL

44

retorno dessa funo um recurso (resource) de resultado de consulta (query) para ser usado para acessar os resultados de outras funes PostgreSQL como pg_fetch_array().
Nota: connection um parmetro opcional para pg_query(). Se connection no for definido, a conexo padro ser usada. A conexo padro a ltima conexo feita por pg_connect() ou pg_pconnect(). Apesar de connection poder ser omitido, isso no recomendado j que pode ser uma causa de erros difceis de encontrar no seu script. Nota: Esta funo era chamada pg_exec(). pg_exec() ainda est disponvel por razes de compatibilidade, mas os usurios so encorajados a usar o novo nome.

Veja

tambm

pg_connect(),

pg_pconnect(),

pg_fetch_array(),

pg_fetch_object(), pg_num_rows(), e pg_affected_rows().

pg_result_error
(PHP 4 >= 4.2.0) pg_result_error -- Retorna a mensagem de erro associada a um resultado

Descrio
string pg_result_error ( resource result) pg_result_error() retorna a mensagem de erro associada ao recurso (resource) de resultado result. Deste modo, o usurio tem melhores chances de ter uma mensagem de erro melhor que a retornada por pg_last_error(). Veja tambm pg_query(), pg_send_query(), pg_get_result(), pg_last_error() e pg_last_notice()

Maurcio de Castro

PHP com PostgreSQL

45

pg_result_seek
(PHP 4 >= 4.3.0) pg_result_seek -- Altera a posio do ponteiro interno de um recurso (resource) de resultado

Descrio
array pg_result_seek ( resource result, int offset) pg_result_seek() altera a posio do ponteiro interno de um recurso (resource) de resultado. Retorna FALSE em caso de erro. Veja tambm pg_fetch_row(), pg_fetch_assoc(), pg_fetch_array(),

pg_fetch_object() e pg_fetch_result().

pg_result_status
(PHP 4 >= 4.2.0) pg_result_status -- Retorna o status do resultado da consulta (query)

Descrio
int pg_result_status ( resource result) pg_result_status() retorna o status do recurso (resource) de resultado. Os valores de retorno possveis so: PGSQL_EMPTY_QUERY, PGSQL_COPY_TO, PGSQL_COMMAND_OK, PGSQL_COPY_FROM, PGSQL_TUPLES_OK,

PGSQL_BAD_RESPONSE, PGSQL_NONFATAL_ERROR e PGSQL_FATAL_ERROR. Veja tambm pg_connection_status().

Maurcio de Castro

PHP com PostgreSQL

46

pg_select
(PHP 4 >= 4.3.0) pg_select -- Seleciona registros.

Descrio
array pg_select ( resource connection, string table_name, array assoc_array [, int options]) pg_select() seleciona registros especificados por assoc_array, que contm pares do tipo campo=>valor. Para uma consulta (query) vlida, retorna um array que contm todos os registros e campos que combinam com a condio especificada por assoc_array. Se options for especificado, pg_convert() ser aplicada assoc_array com as opes especificadas. Exemplo 1. pg_select
<?php $db = pg_connect ('nomebd=meubanco'); // Isto seguro j que $_POST convertida automaticamente $rec = pg_select($bd, 'post_log', $_POST); if ($rec) { echo "Registros selecionados\n"; var_dump($rec); } else { echo "O usurio deve ter inserido dados errados\n"; } ?>

Nota: Esta funo experimental.

Veja tambm pg_convert()

pg_send_query
(PHP 4 >= 4.2.0) pg_send_query -- Envia uma consulta (query) assincrona

Descrio
bool pg_send_query ( resource connection, string query)

Maurcio de Castro

PHP com PostgreSQL

47

bool pg_send_query ( string query) pg_send_query() envia uma consulta (query) assncrona para connection. Diferente de pg_query(), ela pode enviar consultas mltiplas para o PostgreSQL e carregar os resultados, um por um, usando pg_get_result(). A execuo do script no bloqueada enquanto as consultas esto sendo executadas. Use pg_connection_busy() para checar se a conexo est ocupada. (por exemplo, se uma consulta est sendo executada). A consulta pode ser cancelada chamando pg_cancel_query(). Apesar de ser possvel enviar multiplas consultas de uma vez, voc no pode enviar mltiplas consultas para uma conexo ocupada. Se a consulta enviada enquando a conexo est ocupada ela espera at que a ltima cosulta seja finalizada e descarta todos os resultados. Veja tambm pg_query(), pg_cancel_query(), pg_get_result() e

pg_connection_busy()

pg_set_client_encoding
(PHP 3 CVS only, PHP 4 >= 4.0.3) pg_set_client_encoding -- Define a codificao do cliente

Descrio
int pg_set_client_encoding ( [resource connection, string encoding]) pg_set_client_encoding() define a codificao do cliente e retorna 0 caso haja sucesso e -1 se houver erro. encoding a codificao do cliente e pode ter os valores: SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250. As codificaes disponveis dependem da verso do PostgreSQL e libpq. Vide o manual PostgreSQL para saber das codificaes disponveis para o seu PostgreSQL.
Nota: Esta funo exige o PHP 4.0.3 ou maior e PostgreSQL 7.0 ou maior. As codificaes suportadas dependem da verso do PostgreSQL. Vide o manual PostgreSQL para detalhes.

Maurcio de Castro

PHP com PostgreSQL

48

Esta funo era chamada pg_setclientencoding().

Veja tambm pg_client_encoding().

pg_trace
(PHP 4 >= 4.0.1) pg_trace -- Habilita rastreamento em uma conexo PostgreSQL

Descrio
bool pg_trace ( string pathname [, string mode [, resource connection]]) pg_trace() habilita o rastreamento da comunicao frontend/backend do PostgreSQL para um arquivo de depurao especificado pelo parmetro pathname. Para entender completamente estes resultados, voc deve estar familiarizado com o protocolo de comunicao interno do PostgreSQL. Para aqueles que no esto, isso ainda pode ser til para rastrear erros em consultas (queries) enviadas ao servidor, voc poderia fazer por exemplo grep '^Para backend' rastro.log. Para maiores informaes vide o manual PostgreSQL. pathname e mode so os mesmos que na funo fopen() (o mode padro 'w'), connection especifica a conexo a ser rastreada e seu padro a ltima conexo aberta. Retorna TRUE se o pathname pode ser aberto para escrita, FALSE caso contrrio. Veja tambm fopen() e pg_untrace().

pg_tty
(PHP 3, PHP 4 ) pg_tty -- Retorna o nome da tty associada com a conexo

Descrio
string pg_tty ( resource connection)

Maurcio de Castro

PHP com PostgreSQL

49

pg_tty() retorna o nome da tty que a sada do lado do servidor enviada no recurso (resource) de conexo connection.

pg_unescape_bytea
(PHP 4 >= 4.3.0) pg_unescape_bytea -- Faz escape binrio para o tipo bytea

Descrio
string pg_unescape_bytea ( string data) pg_unescape_bytea() faz uma verso binria da string do tipo bytea. Retorna a string em binrio(binary).
Nota: Quando voc faz SELECT bytea type, PostgreSQL returna um valor em octal prefixado por \ (por exemplo: \032). Usurios devem fazer a transformao em binrio por si prprios. Esta funo exige PostgreSQL 7.2 ou superior. Com PostgreSQL 7.2.0 e 7.2.1, o tipo de dados bytea deve ser criado quando voc habilita o suporte a multi-byte. Por exemplo, INSERT INTO tabela_teste (imagem) VALUES ('$imagem_escaped'::bytea); PostgreSQL 7.2.2 ou superior no precisa de coero (cast). A exceo quando a codificao de caracteres do cliente e do backend no combinam, ento pode haver erro de fluxo de multi-byte. O usurio deve fazer a coero (cast) para bytea para evitar este erro.

Veja tambm pg_escape_bytea() e pg_escape_string()

pg_untrace
(PHP 4 >= 4.0.1) pg_untrace -- Desabilita o rastreamento de uma conexo PostgreSQL

Descrio
bool pg_untrace ( [resource connection]) Pra o rastreamento iniciado por pg_trace(). connection especifica a conexo que est sendo rastreada e seu padro a ltima conexo aberta. Sempre retorna TRUE. Veja tambm pg_trace().

Maurcio de Castro

PHP com PostgreSQL

50

pg_update
(PHP 4 >= 4.3.0) pg_update -- Atualiza uma tabela.

Descrio
long pg_update ( resource connection, string table_name, array condition, array data [, int options]) pg_update() atualiza registros que combinam com a condio especificada pelo argumento condition com os dados do parmetro data. Se options for especificado, pg_convert() ser aplicada a data com as opes especificadas. Exemplo 1. pg_update
<?php $bd = pg_connect ('dbname=meubanco'); $dados = array('campo1'=>'AA', 'campo2'=>'BB'); // Isto seguro j que $_POST convertido automaticamente $res = pg_update($bd, 'post_log', $_POST, $dados); if ($res) { echo "Dados atualizados: $res\n"; } else { echo "Usurio deve ter enviado entradas invlidas\n"; } ?>

Nota: Esta funo experimental.

Veja tambm pg_convert()

Maurcio de Castro

PHP com PostgreSQL

51

REFERNCIA
Documentao Oficial do PHP www.php.net

Maurcio de Castro

PHP com PostgreSQL

52