Quero apresentar nesse artigo as principais funcionalidades do PDO. PDO é uma biblioteca que implementa abstração ao acesso dos dados, ou seja, ela utiliza um driver específico, para cada SGBD (Sistema Gerenciador de Banco de Dados), tornando possível a portabilidade da base de dados de sua aplicação, sem que a mesma sofra danos ou que você passe horas e horas reescrevendo linhas e mais linhas de código.
O primeiro passo é habilitar o driver do PDO no php.ini retirando o “;” da sua frente;
No Windows:
extension=php_pdo.dll extension=php_pdo_mysql.dll
No Linux:
extension=pdo.so extension=pdo_mysql.so
Consideremos o seguinte banco de dados:
create database livraria; use livraria; create table livros( id int not null auto_increment, titulo varchar(75) not null, preco decimal(10,2) not null, estoque int not null, PRIMARY KEY (id));
Estabelecemos a conexão com o Banco de dados no nosso arquivo connect.php
//Local do banco $host = "localhost"; //Nome do banco de dados $db = "livraria"; //Seu Usuário no banco de dados $user = "root"; //Senha do banco de dados $pass = ""; //Estabelecendo a conexão try { /** *Agora o pulo do gato,aqui é onde a mágica acontece, precisamos especificar o banco de dados que iremos trabalhar,no nosso caso, optei pelo mysql. Em seguida especificamos o local e o nome do banco de dados e por último o usuário e a senha */ $pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass); } catch (Exception $e) { echo "Erro ao estabelecer conexão com o banco de dados:".$e->getMessage(); die; }
Para inserir no Banco de dados criamos o arquivo insert.php.
/** * Insere conexão com o banco de dados estabelecida anteriormente */ include 'connect.php'; /** * Variáveis que podem receber os valores do seu formulário */ $titulo = "Padrões de Projeto - PHP"; $preco = 140.5; $estoque = 5; try { /** *Aqui preparamos primeiramente nossa instrução de inserção e como valores, passamos as "?"(interrogações) para referencia-las com o parâmetro passado pela função bindParam. * */ $sql="INSERT INTO `livros` (`titulo`, `preco`, `estoque`) VALUES (?, ?, ?)"; $stmt = $pdo->prepare($sql); $stmt->bindParam(1,$titulo); $stmt->bindParam(2,$preco); $stmt->bindParam(3,$estoque); if($stmt->execute()) echo "Gravado com Sucesso"; else throw new Exception("Erro ao gravar informação"); } catch (Exception $e) { echo $e->getMessage(); }
Para atualizar os arquivos no banco de dados utilizamos nosso arquivo update.php:
/** * Inclusão da minha Conexão * */ include 'connect.php'; /** * Variáveis que vem do seu formulário html */ $titulo = "Padrões de Projeto - PHP"; $preco = 60; $estoque = 5; try { /** *Aqui preparamos nossa instrução de atualização dos dados * */ $sql="UPDATE `livros` SET `preco` = ?, `estoque`= ? WHERE `titulo` = ?"; $stmt = $pdo->prepare($sql); $stmt->bindParam(1,$preco); $stmt->bindParam(2,$estoque); $stmt->bindParam(3,$titulo); if($stmt->execute()) echo "Atualizado com Sucesso"; else throw new Exception('Erro ao Atualizar'); } catch (Exception $e) { echo $e->getMessage(); }
Para listar os dados no list.php:
include 'conect.php'; //listando os livros $sql = "SELECT * FROM livros"; $dados = $pdo->query($sql); /** *fetch()->Retorna a próxima linha do resultado. *fetchAll()-> Retorna um array com todos os resultados. *fetchObject()-> Retorna a próxima linha do resultado como objeto. *fetchColumn()-> Retorna uma coluna da próxima linha do resultado. **/ while ($result = $dados->fetch()) { echo $result['titulo'] . " - ". $result['preco']. "-". $result['estoque']." "; }
E para deletar os arquivos criamos o delete.php:
/** * Inclusão da minha Conexão **/ include 'conect.php'; /** * Variáveis que vem do seu formulário html */ $titulo = "Padrões de Projeto - PHP"; $preco = 60; $estoque = 5; try { /** * Aqui preparamos nossa instrução de exclusão dos dados. **/ $sql="DELETE FROM `livros` WHERE `titulo` = ?"; $stmt = $pdo->prepare($sql); $stmt->bindParam(1,$titulo); if($stmt->execute()) echo "Deletado com Sucesso"; else throw new Exception('Erro ao Deletar'); } catch (Exception $e) { echo $e->getMessage(); }
Métodos da classe PDO:
exec int Utilizado para insert, update e delete query PDOStatement Utilizado para resultados tabulares, comando select. prepare PDOStatement Cria um prepared statement, utilizado para dados variáveis.
Trabalhar com PDO tem várias vantagens, além da portabilidade, existe também a questão da segurança, mas isso é cena para os próximos capítulos. Aconselho que visitem a documentação para que possam ter acesso a informação completa da biblioteca, pois a mesma é muito rica e fornecerá ao desenvolvedor inúmeras vantagens que facilitarão no dia a dia do seu desenvolvimento. Obrigado ^^!
clique aqui para baixar o código completo.
Referências
https://www.diogomatheus.com.br/blog/php/trabalhando-com-pdo-no-php/