Sie sind auf Seite 1von 8

1

Resumo do PHP com PostgreSQL e MySQL


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. Nomes de funes alterados (os antigos sero descontinuados nas prximas verses) pg_cmdtuples() pg_exec() pg_fieldname() pg_fieldsize() pg_fieldnum() pg_fieldprtlen() pg_fieldisnull() pg_freeresult() pg_getlastoid() pg_loreadall() pg_locreate() pg_lounlink() pg_loopen() pg_loclose() pg_loread() pg_lowrite() pg_loimport() pg_loexport() pg_numrows() pg_numfields() pg_result() pg_affected_rows() pg_query() pg_field_name() pg_field_size() pg_field_num() pg_field_prtlen() pg_field_is_null() pg_free_result() pg_last_oid() 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() pg_num_rows() pg_num_fields() pg_fetch_result() pg_errormessage() pg_last_error()

Favor, use a string de conexo para pg_connect() e pg_pconnect(). $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.

2
Constantes pr-definidas
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) 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)

Exemplo Usando Objetos Grandes (large objects) Com Tratamento de Erros


pg_last_error -- Retorna a string da ltima mensagem de erro de uma conexo string pg_last_error ( resource connection )

<?php $database = pg_connect ("dbname=jacarta") or die("No pude conectar: " . pg_last_error()); pg_query ($database, "begin") or die ("Consulta Invlida: " . pg_last_error ()); $oid = pg_lo_create ($database) or die ("Operao no realizada: " . pg_last_error()); echo "$oid\n"; $handle = pg_lo_open ($database, $oid, "w") or die ("Operao no realizada: " . pg_last_error()); echo "$handle\n"; pg_lo_write ($handle, "large object data") or die ("Operao no realizada: " . pg_last_error()); pg_lo_close ($handle); pg_query ($database, "commit") or die ("Consulta Invlida: " . pg_last_error()); ?>

Aps o sistema concludo, passado pela fase de testes e colocado em produo, posemos utilizar o @ antes do nome das funes para que no mostrem avisos nem mensagens de erro:

3
$database = @pg_connect ("dbname=jacarta") or die("No pude conectar: " . pg_last_error());

4 Lista de Bancos e Tabelas do PostgreSQL $link o result do pg_connect.


function pg_list_dbs($link) { $sql = 'SELECT datname FROM pg_database'; return (pg_query($link, $sql)); } function pg_list_tables($link) { $sql = "SELECT relname FROM pg_class WHERE relname !~ '^pg_'"; return (pg_query($link, $sql)); }

As funes PHP mais comumente utilizadas para acesso bancos de dados PostgreSQL so pg_connect conecta ao banco pg_query executa uma consulta ao banco pg_num_rown traz o nmero de registros de umaconsulta pg_fetch_object traz o valor de campos em forma de objeto pg_fetch_array - traz o valor de campos pelo nome ou nmero
resource pg_connect ( string connection_string ) Exemplos:

$bdcon = pg_connect("dbname=flavia"); //conecta a um banco de dados chamado "flavia" $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

$conn = pg_connect("host=10.0.0.999 port=5432 dbname=alunos user=postgres password=postgres");

Uma boa prtica criar um script de incluso com a conexo ao banco e incluir em todo script que faa uso do banco:
conexao.inc.php --<?php $conexao = pg_connect("host=localhost port=5432 dbname=DATABASENAME user=USERNAME password=PASSWORD") or die ("Nao consegui conectar ao PostGres --> " . pg_last_error($conexao)); ?> Phpfile.php <?php include('conexao.inc.php'); // Incli a conexo para o banco $resultado=pg_query("SELECT field FROM table WHERE field = '$something' "); $fetch = pg_fetch_row($resultado); // Sample of SQL QUERY //pg_close($conexao); // Close this connection ?>

5
resource pg_query ( resource connection, string query )

<?php $ConnId = pg_connect ("blablabla"); $ResId = pg_query ("select * from table", $ConnId); pg_close ($ConnId); $row = pg_fetch_array ($ResId, 4); ?>
int pg_num_rows ( resource result )

$result = pg_query($conn_id, $query); echo pg_num_rows($result); $sql = "select * from YOURTABLE"; $result = pg_query($sql); $rows = pg_num_rows($result); for ($i = 0; $i < $rows; $i++) { $data = pg_fetch_object($result, $i); echo "$data->COLUMNNAME"; }
objeto pg_fetch_object ( resource result, int row [, int result_type] )

<?php $database = "store"; $db_conn = pg_connect("host=localhost port=5432 dbname=$database"); if (!$db_conn) { echo "Failed connecting to postgres database $database\n"; exit; } $qu = pg_query($db_conn, "SELECT * FROM books ORDER BY author"); $row = 0; // postgres needs a row counter while ($data = pg_fetch_object($qu, $row)) { echo $data->author . " ("; echo $data->year . "): "; echo $data->title . "<br />"; $row++; } pg_free_result ($qu); pg_close ($db_conn);

6
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. 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.

<?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"; ?> Bom exemplo de loop: for($i=0; $row = @pg_fetch_array($result,$i); $i++) { echo $row["field_name"]; }

7 Dicas do PHP com MySQL Date_Add - Para adicionar n dias: <?php mysql_connect("localhost","phpbrasil","phpbrasil"); mysql_select_db("phpbrasil"); $query = ("select nome, tamanho, DATE_ADD(ultimo_dl, INTERVAL n DAY) from phpbrasil"); mysql_query($query); while ($consulta = mysql_fetch_array($query)) { echo "Nome: ".$consulta['nome'] . "<br>"; echo "Tamanho: ".$consulta['tamanho']."<br>"; echo "Data:" .$consulta[2]. "<p>"; } ?> DATE_FORMAT() Tradicionalmente iramos selecionas os dados tabela e fazer um loop para ir formatando cada data para o formato brasileiro. Isso pode ser um pouco cansativo, quando a soluo pode ser essa: <?php mysql_connect("localhost","phpbrasil","phpbrasil"); mysql_select_db("phpbrasil"); $query = ("select nome, tamanho, DATE_FORMAT(ultimo_dl, '%d/%m/%Y') from phpbrasil"); mysql_query($query); while ($consulta = mysql_fetch_array($query)) { echo "Nome: ".$consulta['nome']."<br>"; echo "Tamanho: ".$consulta['tamanho']."<br>"; echo "Data: ". $consulta[2]."<p>"; } ?> Funo COUNT(coluna1, coluna 2, ... , coluna n): Temos uma tabela de registro de textos (textos) e queremos saber quantos textos temos registrados. Ento fazemos isso: <?php mysql_connect("localhost","phpbrasil","phpbrasil"); mysql_select_db("phpbrasil"); $q = mysql_query("select COUNT(*) from textos"); $total = mysql_fetch_row($q); echo "Total de textos: " . $total; ?>

8 Funo SUM(): Temos uma tabela (dls) com a quantidade de downloads de cada programa na coluna downloads. Queremos mostrar quantos downloads j foram feitos no total... assim:
<?php mysql_connect("localhost","phpbrasil","phpbrasil"); mysql_select_db("phpbrasil"); $q = mysql_query("select SUM(downloads) from dls"); $consulta = mysql_fetch_row($q); echo "Total de downloads: ". $consulta[0]." <br>"; ?>

Fonte: Funes teis no MySql por Celso Endo Do www.phpbrasil.com