O que você precisa saber 
sobre PDO ?
Rodrigo “pokemaobr” Cardoso 
✓ Bacharel em Matemática Aplicada e Computacional pela 
✓ Programou em 
✓ Joga 
✓ Evangelista 
@pokemaobr 
Quem sou eu?
Um amigo de um amigo meu disse 
que a extensão do mysql está 
obsoleta. (deprecated)
O cliente de última hora decidiu 
mudar o banco de dados do projeto 
para SQL Server.
O que fazer?
Nós temos a solução
P 
D 
O 
H P 
ATA 
B J E C T S
É uma extensão
É orientado a objetos
Mesmos comandos em SQL para 
bancos diversos
Menos código
E funciona para quais bancos?
E o que eu preciso?
PHP 5.1+
PHP 5.1+ 
SO ou DLL do PDO (PHP < 5.3)
PHP 5.1+ 
SO ou DLL do PDO (PHP < 5.3) 
SO ou DLL do PDO do banco
PDO, Ativar!
extension=php_pdo.so (PHP < 5.3) 
extension=php_pdo_firebird.so 
extension=php_pdo_informix.so 
extension=php_pdo_mssql.so 
extension=php_pdo_mysql.so 
extension=php_pdo_oci.so 
extension=php_pdo_oci8.so 
extension=php_pdo_odbc.so 
extension=php_pdo_pgsql.so 
extension=php_pdo_sqlite.so 
extension=php_pdo.dll (PHP < 5.3) 
extension=php_pdo_firebird.dll 
extension=php_pdo_informix.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
Mas tudo isso?
Só ative o que for usar :)
Conectar em forma de mySQL! 
$connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 
'senha');
Conectar em forma de Firebird! 
$connFirebird= new PDO('firebird:dbname=C:/db/phpsplocaweb.gdb;host=localhost, 'usuario', 
'senha');
Conectar em forma de SQLite! 
$connSqlite = new PDO('sqlite:phpsplocaweb.db');
E o SQL único?
Já está vindo...
INSERT com parâmetros 
conhecidos...
<?php 
$connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 
'senha'); 
$novoCliente = array('nome'=>'Roberto','idade'=>'27','loja'=>'Centro'); 
$connMysql->prepare('INSERT INTO clientes (nome,idade,loja) VALUES (:nome,: 
idade,:loja)')->execute($novoCliente);
INSERT com parâmetros 
desconhecidos...
<?php 
$connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 
'senha'); 
$novoCliente = array('nome'=>'Roberto','idade'=>'27','loja'=>'Centro'); 
$insert = $connMysql->prepare('INSERT INTO clientes (nome,idade,loja) VALUES (?, ?, 
?)') 
$insert->bindParam(1,$novoCliente['nome']); 
$insert->bindParam(2,$novoCliente['idade']); 
$insert->bindParam(3,$novoCliente['loja']); 
$insert->execute();
Realizando um SELECT com o 
método “query” retornando um 
array
<?php 
$connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 
'senha'); 
$sql = 'SELECT nome, idade, loja FROM clientes ORDER BY nome'; 
$query = $connMysql->query($sql); 
foreach ($query as $row) { 
print $row['nome'] . "<br />"; 
print $row['idade'] . "<br />"; 
print $row['loja'] . "<br />"; 
}
Seu Retorno 
Amanda 
16 
Caxias 
Josué 
20 
Sumaré 
Roberto 
15 
Centro
Realizando um SELECT com o 
método “query” retornando um 
objeto
<?php 
$connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 
'senha'); 
$sql = 'SELECT nome, idade, loja FROM clientes ORDER BY nome'; 
$query = $connMysql->query($sql); 
while ($row = $query->fetch(PDO::FETCH_OBJ)) { 
print $row->nome . "<br />"; 
print $row->idade . "<br />"; 
print $row->loja . "<br />"; 
}
Seu Retorno 
Amanda 
16 
Caxias 
Josué 
20 
Sumaré 
Roberto 
15 
Centro
UPDATE utilizando o método 
“query”
<?php 
$idade = '20'; 
$nome = 'Angela'; 
$connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 
'senha'); 
$query = 'UPDATE clientes SET idade = :idade WHERE nome = :nome'; 
$update = $connMysql->prepare($query)->execute(array( 
':idade' => $idade, 
':nome' => $nome 
));
DELETE utilizando os métodos 
“prepare” e “execute”
<?php 
$nome = 'Roberta'; 
$connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 
'senha'); 
$query = 'DELETE FROM clientes WHERE nome = :nome'; 
$delete = $connMysql->prepare($query); 
$delete->blindParam(':nome', $nome); 
$delete->execute();
E tem muito mais...
Dúvidas?
Obrigado! 
br.linkedin.com/in/rwdmc/ 
www.github.com/pokemaobr 
www.facebook.com/pokemaobr

Palestra PHPSP+Locaweb 2014 - PDO

  • 1.
    O que vocêprecisa saber sobre PDO ?
  • 2.
    Rodrigo “pokemaobr” Cardoso ✓ Bacharel em Matemática Aplicada e Computacional pela ✓ Programou em ✓ Joga ✓ Evangelista @pokemaobr Quem sou eu?
  • 3.
    Um amigo deum amigo meu disse que a extensão do mysql está obsoleta. (deprecated)
  • 4.
    O cliente deúltima hora decidiu mudar o banco de dados do projeto para SQL Server.
  • 5.
  • 6.
    Nós temos asolução
  • 7.
    P D O H P ATA B J E C T S
  • 8.
  • 9.
  • 10.
    Mesmos comandos emSQL para bancos diversos
  • 11.
  • 12.
    E funciona paraquais bancos?
  • 14.
    E o queeu preciso?
  • 15.
  • 16.
    PHP 5.1+ SOou DLL do PDO (PHP < 5.3)
  • 17.
    PHP 5.1+ SOou DLL do PDO (PHP < 5.3) SO ou DLL do PDO do banco
  • 18.
  • 19.
    extension=php_pdo.so (PHP <5.3) extension=php_pdo_firebird.so extension=php_pdo_informix.so extension=php_pdo_mssql.so extension=php_pdo_mysql.so extension=php_pdo_oci.so extension=php_pdo_oci8.so extension=php_pdo_odbc.so extension=php_pdo_pgsql.so extension=php_pdo_sqlite.so extension=php_pdo.dll (PHP < 5.3) extension=php_pdo_firebird.dll extension=php_pdo_informix.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
  • 20.
  • 21.
    Só ative oque for usar :)
  • 22.
    Conectar em formade mySQL! $connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 'senha');
  • 23.
    Conectar em formade Firebird! $connFirebird= new PDO('firebird:dbname=C:/db/phpsplocaweb.gdb;host=localhost, 'usuario', 'senha');
  • 24.
    Conectar em formade SQLite! $connSqlite = new PDO('sqlite:phpsplocaweb.db');
  • 25.
    E o SQLúnico?
  • 26.
  • 27.
    INSERT com parâmetros conhecidos...
  • 28.
    <?php $connMysql =new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 'senha'); $novoCliente = array('nome'=>'Roberto','idade'=>'27','loja'=>'Centro'); $connMysql->prepare('INSERT INTO clientes (nome,idade,loja) VALUES (:nome,: idade,:loja)')->execute($novoCliente);
  • 29.
    INSERT com parâmetros desconhecidos...
  • 30.
    <?php $connMysql =new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 'senha'); $novoCliente = array('nome'=>'Roberto','idade'=>'27','loja'=>'Centro'); $insert = $connMysql->prepare('INSERT INTO clientes (nome,idade,loja) VALUES (?, ?, ?)') $insert->bindParam(1,$novoCliente['nome']); $insert->bindParam(2,$novoCliente['idade']); $insert->bindParam(3,$novoCliente['loja']); $insert->execute();
  • 31.
    Realizando um SELECTcom o método “query” retornando um array
  • 32.
    <?php $connMysql =new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 'senha'); $sql = 'SELECT nome, idade, loja FROM clientes ORDER BY nome'; $query = $connMysql->query($sql); foreach ($query as $row) { print $row['nome'] . "<br />"; print $row['idade'] . "<br />"; print $row['loja'] . "<br />"; }
  • 33.
    Seu Retorno Amanda 16 Caxias Josué 20 Sumaré Roberto 15 Centro
  • 34.
    Realizando um SELECTcom o método “query” retornando um objeto
  • 35.
    <?php $connMysql =new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 'senha'); $sql = 'SELECT nome, idade, loja FROM clientes ORDER BY nome'; $query = $connMysql->query($sql); while ($row = $query->fetch(PDO::FETCH_OBJ)) { print $row->nome . "<br />"; print $row->idade . "<br />"; print $row->loja . "<br />"; }
  • 36.
    Seu Retorno Amanda 16 Caxias Josué 20 Sumaré Roberto 15 Centro
  • 37.
    UPDATE utilizando ométodo “query”
  • 38.
    <?php $idade ='20'; $nome = 'Angela'; $connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 'senha'); $query = 'UPDATE clientes SET idade = :idade WHERE nome = :nome'; $update = $connMysql->prepare($query)->execute(array( ':idade' => $idade, ':nome' => $nome ));
  • 39.
    DELETE utilizando osmétodos “prepare” e “execute”
  • 40.
    <?php $nome ='Roberta'; $connMysql = new PDO('mysql:host=localhost;dbname=phpsplocaweb', 'usuario', 'senha'); $query = 'DELETE FROM clientes WHERE nome = :nome'; $delete = $connMysql->prepare($query); $delete->blindParam(':nome', $nome); $delete->execute();
  • 41.
    E tem muitomais...
  • 42.
  • 43.