Palestra PHPSP+Locaweb 2014 - PDO

43
O que você precisa saber sobre PDO ?

Transcript of Palestra PHPSP+Locaweb 2014 - PDO

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 RetornoAmanda16CaxiasJosué20SumaréRoberto15Centro

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 RetornoAmanda16CaxiasJosué20SumaréRoberto15Centro

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?