PHP - Conectando bancos de dados através do PDO (PHP Data Object)
Com o advento do php 7 precisamos rever alguns procedimentos que acabaram ficando conosco desde os primórdios do PHP. Um destes pontos a serem revistos é o trabalho com bancos de dados. Uma grande parte dos desenvolvedores PHP ainda trabalha com mysql_query, seja pelo costume, preguiça ou mesmo ambiente legado. Precisamos evoluir deste ponto e começar a trabalhar com bibliotecas mais modernas e flexiveis. Está na hora de começarmos a trabalhar com PDO ou PHP Data Object.
PDO é uma classe nativa para conexão com banco de dados e que, além de trazer recursos excelentes, também pode ser mais rápida se adequadamente utilizada, além de adicionar uma camada de abstração que faz o trabalho de mudar de base de dados muito tranquila. PDO suporta inúmeros bancos como MySQL, SQLite, Postgree, Oracle e outros.
Vamos dar algumas dicas simples e rápidas para começar a usar o PDO.
CONEXÃO
Abaixo segue um exemplo de conexão, juntamente com o tratamento de erro adequado para o caso da conexão com o banco de dados falhar:
try {
$pdo = New PDO("mysql:host=localhost;dbname=banco","login","senha");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
showHandler('Error');
showError('Sorry,'.$e->getMessage());
}
A linha $pdo = New PDO("mysql:host=localhost;dbname=banco","login","senha"); propriamnete faz a conexão com o banco MySQL
A linha $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) define os tipos de erro que serão exibidos. É interessante definir os erros pois muitas vezes por questão de segurança não queremos que o usuário veja certas informações do servidor em caso de algum erro.
Dentro de catch estão as funções que exibem erro caso a conexão falhe.
FAZENDO UMA QUERY
Para fazer uma query basta usar a seguinte sintaxe:
$result = $pdo->query("SELECT * FROM tabela");
Similar ao mysql_query. Para recuperar os dados existem várias formas. Podemos fazer um loop dos dados com while:
while ($row = $result->fetch()) {
echo $row['campo1']
}
ou atribuir os mesmos diretamente a uma array ao invés de fazer um loop por todos os ponteiros:
$data = $result->fetchAll();
Estas são as maneiras mais básicas de acessar os dados de um banco e com elas já podemos fazer muitas coisas interessantes. Existem outras maneiras de preparar e executar consultas mas que necessitam de outro post.
INSERINDO DADOS
Inserir dados é muito parecido com a consulta em si. O que muda basicamente é a sintaxe dos comandos no banco de dados.
A maneira mas simples de demonstar a inserção de dados é a que segue abaixo:
$qy = "INSERT INTO tabela (campo1,campo2,campo3) VALUES ('Andre','Programador',33)";
$pdo->query($qy);
onde 'tabela' é qualquer tabela de seu banco e 'campo1' a 'campo3' são os campos de sua tabela.
Outra maneira de fazer é utilizando Prepared Statements:
$qy = "INSERT INTO tabela (campo1,campo2,campo3) VALUES (:nome,:profissao,:idade)";
$pre = $pdo->prepare($qy);
$pre->execute(Array(
':nome' => 'Andre',
':profissao' => 'Programador',
':idade' => 33
));
Neste caso é em $pre->execute que a query é executada. Este método ajuda a prevenir SQL injections.
Para retornar o ID do ultimo registro inserido utilizamos:
$pdo->lastInsertId();
CONCLUSÃO
A PDO é uma classe extremamente robusta, funcional e fácil de trabalhar. Neste post mostramos apenas o básico para iniciar. Vale a pena estudar e começar a usa-la já que as antigas funções mysql_query serão retiradas das novas versões do PHP.
REFERÊNCIAS
Livro: Popel, Dennis - Learning PHP Data Objects - Ed Packt Publishing
Codecourse - https://www.youtube.com/user/phpacademy
Comentários
Postar um comentário