Escolar Documentos
Profissional Documentos
Cultura Documentos
PDO uma classe que representa a conexo entre o PHP e a base de dados.
Neste tutorial voc vai aprender a manipular dados de BDs MySQL com a PDO
Class.
Trabalhar com PHP sinnimo de trabalhar com pginas dinmicas, e no h a possibilidade de
imaginar pginas dinmicas sem uma base de dados onde salvar os dados.
PDO uma classe PHP que representa a conexo entre o PHP e o servidor de banco de dados.
Com essa classe possvel adicionar, excluir e editar dados presentes em bancos de dados e
tabelas de vrios SGBDs diferentes, tais como MySQL, SQLite, PostgreSQL, e outros.
Para esse tutorial em especco, vamos aprender a conectar e manipular dados de bases de
dados MySQL utilizando PDO.
Ento vamos l.
1
2
3
4
5
6
7
8
1 de 10
Comando MySQL:
1
FLUSH PRIVILEGES;
Logo em seguida, criei uma tabela chamada tabela_contatos com os seguintes campos:
ID contato_id
Nome - contato_nome
Sobrenome - contato_sobrenome
Email - contato_email
Site - contato_site
Data de nascimento contato_data_nascimento
Telefone - contato_telefone
Descrio - contato_descricao
Comando MySQL:
1
`contato_descricao` TEXT,
10
11
) ;
Perceba que no podemos adicionar acentos, ou caracteres estranhos para o nome de nossos
campos, portanto, tente utilizar apenas letras, nmeros e um caractere sublinhado (underline)
para separar as palavras.
Crie a base de dados, o usurio e a tabela e vamos para a prxima parte da aula.
2 de 10
index.php);
Aps a criao, abra o arquivo "conexao.php" e crie as seguintes variveis:
1
<?php
$base_dados = 'contatos';
$usuario_bd = 'user_db_contatos';
$senha_bd
= 'senha_db_contatos';
$host_db
= 'localhost';
Perceba que vou utilizar os dados das variveis acima para a conexo PDO com a base de
dados, portanto, preencha os valores corretamente. Se voc alterou alguma coisa
anteriormente, tambm ter que alterar os dados nas variveis acima.
Para criar uma instncia da classe PDO, basta fazer o seguinte:
1
// Instncia PDO
<?php
/* Variveis PDO */
$base_dados = 'contatos';
$usuario_bd = 'user_db_contatos';
$senha_bd
= 'senha_db_contatos';
$host_db
= 'localhost';
$conexao_pdo = null;
8
9
10
11
12
// Tenta conectar
13
try {
14
15
16
17
18
19
20
// Mata o script
21
die();
3 de 10
22
23
?>
Voc no precisa decorar isso, apenas altere os valores das variveis e pronto, conectado base
de dados com a classe PDO instanciada em $conexao_pdo.
<?php include('conexao.php');?>
A funo include do PHP faz a incluso do que escrevemos no arquivo conexao.php para o
arquivo index.php, assim nosso script car mais organizado.
Para iniciar qualquer ao com PDO, primeiramente temos que preparar o comando a ser
executado pelo MySQL com o mtodo PDO::prepare.
Veja um exemplo:
1
Como voc pode perceber acima, estamos preparando nosso servidor MySQL para receber o
comando "SELECT * FROM tabela_contatos" (selecione tudo da tabela tabela_contatos).
Feito isso, necessrio executar o comando:
1
$prepara->execute();
Agora o comando que havamos enviado anteriormente executado. Porm, agora precisamos
de mais um recurso para visualizar os dados, PDO::fetch. Este mtodo nos retorna a linhas de
uma consulta SQL, alm disso, retorna true enquanto houver novas linhas. Isso indica que
podemos utilizar o lao while para mostrar tudo o que for encontrado pelo comando que
executarmos.
Por exemplo:
1
4 de 10
Observao: Voc deve adicionar dados na tabela, caso contrrio, nada ser exibido na tela.
Perceba que voc deve saber o nome dos campos que deseja exibir para utilizar com a varivel
criada na condio do lao while.
Quando precisamos enviar parmetros para o comando selecionar um ID em especco, por
exemplo devemos enviar um interrogao (?) para cada parmetro.
Veja um exemplo:
1
Perceba que estamos agora enviando o seguinte comando para o servidor MySQL: SELECT *
FROM tabela_contatos WHERE contato_id = ? (selecione tudo da tabela tabela_contatos onde
campo contato_id igual a ? ).
Esse interrogao ser enviado para o mtodo PDO::execute como um array. Veja:
1
$parametros = array( 2 );
3
4
// Executa o comando
$prepara->execute( $parametros );
Ou seja, meu primeiro interrogao ser substitudo pelo nmero 2, que estou enviando como
parmetro.
Caso precise enviar mais parmetros, basta adicionar interrogaes em todos os locais onde
iriam os valores, depois adicionar os valores no array de parmetros. Por exemplo:
1
3
4
$parametros = array( 2, 1 );
6
7
// Executa o comando
$prepara->execute( $parametros );
5 de 10
10
11
12
13
14
15
<?php include('conexao.php');?>
2
3
<?php
$prepara = $conexao_pdo->prepare(
'SELECT
FROM
tabela_contatos
10
11
12
);
13
14
15
16
17
// Executa o comando
18
$prepara->execute( $parametros );
19
20
21
22
23
24
25
Perceba tambm que s iremos utilizar o lao while quando utilizarmos o comando "SELECT",
para "UPDATE", "INSERT" e "DELETE", no necessrio (vamos falar sobre cada um dos
comandos).
6 de 10
Para inserir dados na tabela, siga a mesma estrutura, porm, no necessrio utilizar o lao
while.
Por exemplo:
1
<?php include('conexao.php');?>
2
3
<?php
$prepara = $conexao_pdo->prepare(
`contato_nome`,
`contato_sobrenome`,
`contato_email`,
10
`contato_site`,
11
`contato_data_nascimento`,
12
`contato_telefone`,
13
`contato_descricao`
14
15
VALUES (
16
?,
17
?,
18
?,
19
?,
20
?,
21
?,
22
23
24
)"
);
25
26
27
$parametros = array(
28
'Jos',
29
'Silva de Oliveira',
30
'contato@tutsup.com',
31
'http://www.tutsup.com',
32
'1987-04-20 13:45:57',
33
'+553588888888',
34
35
);
36
37
// Executa o comando
7 de 10
38
39
40
41
if ( $verifica ) {
42
43
44
$erro = $prepara->errorInfo();
45
46
47
Verique que agora inseri dados na base de dados, e mesmo assim tudo continua o mesmo.
Onde eu deveria colocar valores; coloco interrogaes. Depois substituo os pontos de
interrogao por valores do array de parmetros. Os pontos de interrogao sero substitudos
na mesma ordem em que foram adicionados no array.
Como o mtodo PDO::execute retorna true se o comando for executado com sucesso, podemos
fazer a vericao para saber se os dados foram enviados para a base de dados corretamente:
1
if ( $verifica ) {
3
4
$erro = $prepara->errorInfo();
<?php include('conexao.php');?>
2
3
<?php
$prepara = $conexao_pdo->prepare(
6
7
8
9
10
8 de 10
11
12
// Executa o comando
13
14
15
16
if ( $verifica ) {
17
18
19
$erro = $prepara->errorInfo();
20
21
22
Ou seja, estou executando um comando que modica o nome que estiver na linha de ID 6 para
"Seram". Simples assim.
<?php include('conexao.php');?>
2
3
<?php
6
7
$parametros = array( 6 );
9
10
// Executa o comando
11
12
13
14
if ( $verifica ) {
15
16
17
$erro = $prepara->errorInfo();
18
19
20
9 de 10
Concluindo
Este o mtodo mais seguro para manipular dados de bases de dados em PHP. Alm de
prevenir SQLInjection, os outros mtodos que utilizvamos antigamente esto obsoletos.
10 de 10