domingo, 31 de julho de 2011

PDO (PHP Data Objects)


Com o grande crescimento do PHP, sentiu-se necessidade de unificar as diferentes formas de conexões a banco de dados presentes no PHP. Assim surgiu a PDO, com o intuito de fornecer uma biblioteca consistente e com a maioria das características presentes nas extensões de acesso a SGBD (Sistema Gerenciador de Banco de Dados), de uma forma unificada.

Atualmente existem outras bibliotecas escritas em PHP com o mesmo objetivo. As mais populares são ADOdb e PEAR DB. A grande diferença entre estas duas bibliotecas ao PDO é a velocidade. A PDO é escrita em uma linguagem compilada (C/C++), enquanto as duas outras são escritas em linguagens interpretadas, outra desvantagem é a necessidade de incluir arquivos de código fonte a suas aplicações, enquanto a PDO basta habilitar ao servidor tornando disponível para todos os aplicativos.
Para verificarmos quais os drivers estão habilitados, executamos o seguinte código:
<?php
foreach ( PDO::getAvailableDrivers() as $driver )
{
    echo $driver . '<br />';
}
?>
Resultado:
sqlite
mysql
pgsql
Para habilitar os drivers basta editar o arquivo php.ini e descomentar as seguintes linhas:
extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
Basta reiniciar o PHP e a PDO estará disponível para utilizarmos.
Para conectarmos a um banco de dados é bem simples, basta instanciar um objeto PDO.
Abaixo exemplos com os bancos Postgres, MySql, SQLite, Firebird, Oracle, SQL Server.
<?php
try
{
    // Conexao com banco Postgres
    $conn = new PDO( "pgsql:dbname=; user=usuario; password=senha; host=host_banco; port=porta" );
    // Conexao com banco MySql
    $conn = new PDO( "mysql:host=host_banco; port=porta; dbname=nome_db", 'usuario', 'senha' );
    // Conexao com banco SQLite
    $conn = new PDO( "sqlite:host_banco" );
    // Conexao com banco Firebird
    $conn = new PDO( "firebird:dbname=nome_db", 'usuario', 'senha' );
    // Conexao com banco Oracle
    $conn = new PDO( "oci:dbname=nome_db", 'usuario', 'senha' );
    // Conexao com banco MS Sql Server
    $conn = new PDO( "mssql:host=host_banco,1433; dbname=nome_db", 'usuario', 'senha' );
}
catch ( PDOException $e )
{
    // Caso ocorra uma exceção, exibe na tela
    echo $e->getMessage();
}
?>
Como fazer uma consulta utilizando o PDO?
É muito simples, segue abaixo o exemplo:
<?php
try
{
    // Instancia o objeto PDO
    $pdo = new PDO( 'mysql:host=localhost;dbname=exemplo_select', 'root', 'senha' );
    // executa a instrução SQL
    $consulta = $pdo->query( 'SELECT nome, usuario FROM usuario;' );
    // Pega os dados de um determinado usuário através de um array
    while ( $linha = $consulta->fetch( PDO::FETCH_ASSOC ) )
    {
        // aqui eu mostro os valores de minha consulta
        echo "Nome: {$linha['nome']} - Usuário: {$linha['usuario']}<br />";
    }
    // fecho a conexão
    $pdo = null;
}
catch ( PDOException $e )
{
    // Caso ocorra uma exceção, exibe na tela
    echo $e->getMessage();
}
?>
Resultado:
Nome: Marcos - Usuário: marcos
Nome: Pedro - Usuário: pedro
Nome: João - Usuário: joao
No exemplo acima estamos retornando os dados da consulta através de um array, podemos retornar os dados de outras formas:
PDO::FETCH_ASSOC – Retorna um array indexado pelo nome da coluna.
PDO::FETCH_NUM – Retorna um array indexado pela posição numérica da coluna.
PDO::FETCH_BOTH – Retorna uma array indexado pelo nome da coluna e pela posição numérica da mesma.
PDO::FETCH_OBJ – Retorna um objeto anônimo, de modo que cada coluna é acessada como uma propriedade.
Bom, esta foi uma breve introdução ao PDO, leia mais sobre como efetuar consultas SQL utilizando o PDO.
Vou ficando por aqui, Abraço.


Fonte: Ctncardoso

Nenhum comentário :

Postar um comentário

Total de visualizações de página