aula 28 - pdo em php

10
PDO em PHP – Aula 28 PDO é uma classe que representa a conexão 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 é sinônimo de trabalhar com páginas dinâmicas, e não há a possibilidade de imaginar páginas dinâmicas sem uma base de dados onde salvar os dados. PDO é uma classe PHP que representa a conexão entre o PHP e o servidor de banco de dados. Com essa classe é possível adicionar, excluir e editar dados presentes em bancos de dados e tabelas de vários SGBDs diferentes, tais como MySQL, SQLite, PostgreSQL, e outros. Para esse tutorial em especí�co, vamos aprender a conectar e manipular dados de bases de dados MySQL utilizando PDO. Então vamos lá. 1 Criando o banco de dados 2 PDO – Conectando-se à base de dados 3 Exibindo dados na tabela MySQL com PDO 4 Inserindo dados na tabela MySQL com PDO 5 Editando dados da tabela MySQL com PDO 6 Excluindo dados da tabela MySQL com PDO 7 Vídeo tutorial: PDO em PHP 8 Concluindo Criando o banco de dados Antes de qualquer coisa, precisamos criar uma base de dados em nosso servidor MySQL para conectar-se posteriormente com PDO. Felizmente, ontem explicamos como fazer isso utilizando o phpMyAdmin: Crie tabelas e bases de dados no phpMyAdmin Vou criar uma base de dados chamada contatos. Você pode fazer isso pelo phpMyAdmin (como explicado no artigo mencionado anteriormente), ou diretamente pelo servidor MySQL. Se estiver utilizando o servidor MySQL, vou detalhando o que vou fazer, e logo em seguida mostrarei o comando. Comando MySQL: Depois criei um usuário chamado user_db_contatos, senha senha_db_contatos, com permissão somente na base de dados contatos. 1 CREATE DATABASE `contatos`; PDO em PHP - Aula 28 - TutsUP 1 de 10

Upload: andre-franca

Post on 11-Nov-2015

9 views

Category:

Documents


1 download

DESCRIPTION

PDO em PHP

TRANSCRIPT

  • PDO em PHP Aula 28PDO 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 PDOClass.

    Trabalhar com PHP sinnimo de trabalhar com pginas dinmicas, e no h a possibilidade deimaginar 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 etabelas 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 dedados MySQL utilizando PDO.

    Ento vamos l.

    1 Criando o banco de dados2 PDO Conectando-se base de dados3 Exibindo dados na tabela MySQL com PDO4 Inserindo dados na tabela MySQL com PDO5 Editando dados da tabela MySQL com PDO6 Excluindo dados da tabela MySQL com PDO7 Vdeo tutorial: PDO em PHP8 Concluindo

    Criando o banco de dadosAntes de qualquer coisa, precisamos criar uma base de dados em nosso servidor MySQL paraconectar-se posteriormente com PDO. Felizmente, ontem explicamos como fazer isso utilizandoo phpMyAdmin:

    Crie tabelas e bases de dados no phpMyAdmin

    Vou criar uma base de dados chamada contatos.

    Voc pode fazer isso pelo phpMyAdmin (como explicado no artigo mencionado anteriormente),ou diretamente pelo servidor MySQL. Se estiver utilizando o servidor MySQL, vou detalhando oque vou fazer, e logo em seguida mostrarei o comando.

    Comando MySQL:

    Depois criei um usurio chamado user_db_contatos, senha senha_db_contatos, compermisso somente na base de dados contatos.

    1 CREATE DATABASE `contatos`;

    PDO em PHP - Aula 28 - TutsUP 1 de 10

  • Comando MySQL:

    Logo em seguida, criei uma tabela chamada tabela_contatos com os seguintes campos:

    ID contato_idNome - contato_nomeSobrenome - contato_sobrenomeEmail - contato_emailSite - contato_siteData de nascimento contato_data_nascimentoTelefone - contato_telefoneDescrio - contato_descricao

    Comando MySQL:

    Perceba que no podemos adicionar acentos, ou caracteres estranhos para o nome de nossoscampos, 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.

    PDO Conectando-se base de dadosDepois de congurar a base de dados, podemos iniciar a congurao de nosso script deconexo PDO em PHP.

    Vamos separar a conexo do arquivo principal, portanto, crie dois arquivos:

    index.php Ter a congurao que o usurio vai ver na tela do navegador (sem PDO);conexao.php Ter a congurao do nosso script PDO (ser embutido no arquivo

    123

    CREATE USER 'user_db_contatos' @'%' IDENTIFIED BY 'senha_db_contatos' ;FLUSH PRIVILEGES; GRANT ALL ON `contatos`.* TO 'user_db_contatos'@'%';

    1234567891011

    CREATE TABLE `contatos`.`tabela_contatos` ( `contato_id` INT (11) NOT NULL AUTO_INCREMENT, `contato_nome` VARCHAR (40), `contato_sobrenome` VARCHAR (40), `contato_email` VARCHAR (50), `contato_site` VARCHAR (255), `contato_data_nascimento` DATETIME DEFAULT '0000-00-00 00:00:00', `contato_telefone` VARCHAR (25), `contato_descricao` TEXT, PRIMARY KEY (`contato_id`)) ;

    PDO em PHP - Aula 28 - TutsUP 2 de 10

  • index.php);

    Aps a criao, abra o arquivo "conexao.php" e crie as seguintes variveis:

    Perceba que vou utilizar os dados das variveis acima para a conexo PDO com a base dedados, portanto, preencha os valores corretamente. Se voc alterou alguma coisaanteriormente, tambm ter que alterar os dados nas variveis acima.

    Para criar uma instncia da classe PDO, basta fazer o seguinte:

    Para a nossa conexo, vamos deixar isso um pouco mais simples:

    123456

  • Voc no precisa decorar isso, apenas altere os valores das variveis e pronto, conectado basede dados com a classe PDO instanciada em $conexao_pdo.

    Exibindo dados na tabela MySQL com PDOATENO: Voc vai precisar saber comandos MySQL para continuar essa leitura, caso no saibanada, leia nos links abaixo:

    Comandos bsicos do MySQL (Insert, Delete, Update e Select)MySQL: comandos bsicos

    Agora abra o arquivo index.php (ou o arquivo que voc tiver criado anteriormente) e, naprimeira linha, coloque o seguinte:

    A funo include do PHP faz a incluso do que escrevemos no arquivo conexao.php para oarquivo index.php, assim nosso script car mais organizado.

    Para iniciar qualquer ao com PDO, primeiramente temos que preparar o comando a serexecutado pelo MySQL com o mtodo PDO::prepare.

    Veja um exemplo:

    Como voc pode perceber acima, estamos preparando nosso servidor MySQL para receber ocomando "SELECT * FROM tabela_contatos" (selecione tudo da tabela tabela_contatos).

    Feito isso, necessrio executar o comando:

    Agora o comando que havamos enviado anteriormente executado. Porm, agora precisamosde mais um recurso para visualizar os dados, PDO::fetch. Este mtodo nos retorna a linhas deuma consulta SQL, alm disso, retorna true enquanto houver novas linhas. Isso indica quepodemos utilizar o lao while para mostrar tudo o que for encontrado pelo comando queexecutarmos.

    Por exemplo:

    2223

    }?>

    1

    12

    // A classe PDO prepara o comando a ser executado$prepara = $conexao_pdo->prepare('SELECT * FROM tabela_contatos');

    12

    // A classe PDO executa o comando$prepara->execute();

    1 // Lao para exibir todas as linhas

    PDO em PHP - Aula 28 - TutsUP 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 varivelcriada na condio do lao while.

    Quando precisamos enviar parmetros para o comando selecionar um ID em especco, porexemplo devemos enviar um interrogao (?) para cada parmetro.

    Veja um exemplo:

    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 ondecampo contato_id igual a ? ).

    Esse interrogao ser enviado para o mtodo PDO::execute como um array. Veja:

    Ou seja, meu primeiro interrogao ser substitudo pelo nmero 2, que estou enviando comoparmetro.

    Caso precise enviar mais parmetros, basta adicionar interrogaes em todos os locais ondeiriam os valores, depois adicionar os valores no array de parmetros. Por exemplo:

    23456

    while ( $linha = $prepara->fetch() ) {echo 'Nome: ' . $linha['contato_nome'] . '';echo 'Sobrenome: ' . $linha['contato_sobrenome'] . '';// ... E assim por diante ...

    }

    12

    // Prepara o comando a ser executado$prepara = $conexao_pdo->prepare('SELECT * FROM tabela_contatos WHERE contato_id = ?'

    12345

    // Parmetros do comando SQL$parametros = array( 2 ); // Executa o comando$prepara->execute( $parametros );

    123456789

    // Prepara o comando a ser executado$prepara = $conexao_pdo->prepare('SELECT * FROM tabela_contatos WHERE contato_id = ? OR contato_i // Parmetros do comando SQL$parametros = array( 2, 1 ); // Executa o comando$prepara->execute( $parametros );

    PDO em PHP - Aula 28 - TutsUP 5 de 10

  • Agora estou pedindo para exibir os IDs 1 e 2.

    Voc pode utilizar qualquer tipo de consulta, como "BETWEEN", "LIKE", e demais. Por exemplo,suponhamos que eu queira utilizar LIKE, veja:

    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 doscomandos).

    Inserindo dados na tabela MySQL com PDO

    101112131415

    // Lao para exibir todas as linhaswhile ( $linha = $prepara->fetch() ) {

    echo 'Nome: ' . $linha['contato_nome'] . '';echo 'Sobrenome: ' . $linha['contato_sobrenome'] . '';// ... E assim por diante ...

    }

    12345678910111213141516171819202122232425

  • Para inserir dados na tabela, siga a mesma estrutura, porm, no necessrio utilizar o laowhile.

    Por exemplo:

    12345678910111213141516171819202122232425262728293031323334353637

  • 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 deinterrogao por valores do array de parmetros. Os pontos de interrogao sero substitudosna mesma ordem em que foram adicionados no array.

    Como o mtodo PDO::execute retorna true se o comando for executado com sucesso, podemosfazer a vericao para saber se os dados foram enviados para a base de dados corretamente:

    Editando dados da tabela MySQL com PDOPara editar dados no muda muita coisa, porm, mais seguro se enviarmos o ID da linha quequeremos editar. Veja:

    38394041424344454647

    $verifica = $prepara->execute( $parametros ); // Verifica se o comando foi executadoif ( $verifica ) {

    echo 'Dados enviados base de dados com sucesso';} else {

    $erro = $prepara->errorInfo();echo 'Ocorreu um erro na sua consulta. ';echo 'Erro: ' . $erro[2];

    }

    12345678

    // Verifica se o comando PDO foi executado com sucessoif ( $verifica ) {

    echo 'Dados enviados base de dados com sucesso';} else {

    $erro = $prepara->errorInfo();echo 'Ocorreu um erro na sua consulta. ';echo 'Erro: ' . $erro[2];

    }

    12345678910

  • Ou seja, estou executando um comando que modica o nome que estiver na linha de ID 6 para"Seram". Simples assim.

    Excluindo dados da tabela MySQL com PDOPara excluir dados mais simples ainda.

    Basta enviar o comando e executar:

    111213141516171819202122

    // Executa o comando$verifica = $prepara->execute( $parametros ); // Verifica se o comando foi executadoif ( $verifica ) {

    echo 'Dados enviados base de dados com sucesso';} else {

    $erro = $prepara->errorInfo();echo 'Ocorreu um erro na sua consulta. ';echo 'Erro: ' . $erro[2];

    }

    1234567891011121314151617181920

  • Pronto, agora exclu a linha com ID 6 (contato_id = 6).

    Vdeo tutorial: PDO em PHPAssista a um vdeo tutorial para complementar o artigo acima:

    ConcluindoEste o mtodo mais seguro para manipular dados de bases de dados em PHP. Alm deprevenir SQLInjection, os outros mtodos que utilizvamos antigamente esto obsoletos.

    PDO em PHP - Aula 28 - TutsUP 10 de 10