Curso Completo de PHP_PDO

18
Curso Completo de PHP – PDO Sejam todos bem vindos (as) ao curso de PDO – PHP Data Objects Requisito: Para começar o curso de PDO, aconselho que veja antes, todas as aulas do curso de HTML , php, Banco de dados MYSQL. Título das Aulas + links abaixo: Curso PDO – Aula 01 – Introdução Curso PDO – Aula 02 – Conexão com PDO Curso PDO – Aula 03 – Selecionando Dados com PDO Curso PDO – Aula 04 – Cadastrando Dados com PDO Curso PDO – Aula 05 – Deletando Dados com PDO Curso PDO – Aula 06 – Atualizando Dados com PDO Aula 01 – Introdução Hoje iremos começar nosso curso exclusivo de PDO (PHP Data Objects). O PDO vem dominando o mercado no mundo dos programadores PHP, e por este motivo não pode ficar para trás correto? Neste curso iremos aprender a fazer um CRUD ( create | read | update | delete – criar | ler | atualizar | deletar) completo com PDO, e mais. Iremos também fazer comparações com o modo primitivo do PHP, assim todos nós iremos atender as diferenças entre ambos. Qual a vantagem do uso do PDO? Imagine que você criou um sistema utilizando o modo primitivo do php, e o tipo de banco de dados utilizado foi o MYSQL. Depois de muito tempo, seu cliente, fala pra você que o banco de dados agora será do tipo ORACLE. Particularmente, você teria de mudar diversas páginas correto? Com o PDO já é diferente, pois o próprio trabalha com driver’s de banco de dados, ou seja, para solucionar o problema de seu cliente utilizando PDO, bastaria modificar apenas o arquivo de conexão com o banco de dados, informando o driver desejado. Com PDO, podemos ficar mais tranquilos co-relação a vulnerabilidades , pois com a utilização do próprio , poderemos evitar situações de SQL Injection. Está gostando? Continue acompanhando o curso, pois este é apenas o inicio. Gostaria de comprar um curso online conosco, e não conhece nosso campus virtual? Visite: http://www.escolacompleta.com/campus Continuação… vamos a uma rápida introdução do PDO. Introdução O PHP Data Objects ( PDO ) define uma interface leve em PHP. Cada driver de banco de dados que implementa a interface PDO pode expor dados de recursos específicos. Note que você não pode executar quaisquer funções de banco de dados usando a extensão PDO, por si só, você deve usar um banco de dados específico do driver PDO para acessar um servidor de banco de dados. PDO fornece um acesso de dados abstrato, o que significa que, independentemente de qual banco de dados você está usando, você usa as mesmas funções para emitir consultas e buscar dados (CRUD). Aula 02 – Conexão com PDO Nesta aula iremos aprender a criar uma conexão com o banco de dados utilizando o PDO, lembrando que faremos comparações do modo primitivo e o modo PDO. De fato uma conexão primitiva sem a utilização do PDO, ficaria como o exemplo abaixo:

Transcript of Curso Completo de PHP_PDO

Page 1: Curso Completo de PHP_PDO

Curso Completo de PHP – PDOSejam todos bem vindos (as) ao curso de PDO – PHP Data ObjectsRequisito: Para começar o curso de PDO, aconselho que veja antes, todas as aulas do curso de HTML, php, Banco de dados MYSQL.Título das Aulas + links abaixo:Curso PDO – Aula 01 – IntroduçãoCurso PDO – Aula 02 – Conexão com PDOCurso PDO – Aula 03 – Selecionando Dados com PDOCurso PDO – Aula 04 – Cadastrando Dados com PDOCurso PDO – Aula 05 – Deletando Dados com PDOCurso PDO – Aula 06 – Atualizando Dados com PDO

Aula 01 – IntroduçãoHoje iremos começar nosso curso exclusivo de PDO (PHP Data Objects). O PDO vem dominando o mercado no mundo dos programadores PHP, e por este motivo não pode ficar para trás correto?Neste curso iremos aprender a fazer um CRUD ( create | read | update | delete – criar | ler | atualizar | deletar) completo com PDO, e mais. Iremos também fazer comparações com o modo primitivo do PHP, assim todos nós iremos atender as diferenças entre ambos.

Qual a vantagem do uso do PDO?Imagine que você criou um sistema utilizando o modo primitivo do php, e o tipo de banco de dados utilizado foi o MYSQL.Depois de muito tempo, seu cliente, fala pra você que o banco de dados agora será do tipo ORACLE.Particularmente, você teria de mudar diversas páginas correto?Com o PDO já é diferente, pois o próprio trabalha com driver’s de banco de dados, ou seja, para solucionar o problema de seu cliente utilizando PDO, bastaria modificar apenas o arquivo de conexão com o banco de dados, informando o driver desejado.Com PDO, podemos ficar mais tranquilos co-relação a vulnerabilidades , pois com a utilização do próprio , poderemos evitar situações de SQL Injection.Está gostando? Continue acompanhando o curso, pois este é apenas o inicio.Gostaria de comprar um curso online conosco, e não conhece nosso campus virtual? Visite: http://www.escolacompleta.com/campus Continuação… vamos a uma rápida introdução do PDO.

Introdução

O PHP Data Objects ( PDO ) define uma interface leve em PHP. Cada driver de banco de dados que implementa a interface PDO pode expor dados de recursos específicos. Note que você não pode executar quaisquer funções de banco de dados usando a extensão PDO, por si só, você deve usar um banco de dados específico do driver PDO para acessar um servidor de banco de dados.PDO fornece um acesso de dados abstrato, o que significa que, independentemente de qual banco de dados você está usando, você usa as mesmas funções para emitir consultas e buscar dados (CRUD).

Aula 02 – Conexão com PDONesta aula iremos aprender a criar uma conexão com o banco de dados utilizando o PDO, lembrando que faremos comparações do modo primitivo e o modo PDO.De fato uma conexão primitiva sem a utilização do PDO, ficaria como o exemplo abaixo:

Page 2: Curso Completo de PHP_PDO

<?php

$host = "localhost";

$user = "root"; $pass = "";

$bd = "banco_teste";

$conexao = mysql_connect($host,$user,$pass) OR DIE ("Erro ao conectar com o banco de dados: ".mysql_error());

if($conexao){ mysql_select_db($bd) OR DIE ("Erro ao selecionar banco de dados: ".mysql_error());

}else{}

?>

De certa forma o modo primitivo é menos complexo, e mais rápido de ser desenvolvido, contudo existem desvantagens.Uma delas é a vulnerabilidade;Outra questão é o famoso código macarrão;E mais uma é a questão de tempo longo para mudanças de tipos de banco de dados.Veja agora como criar sua conexão com banco de dados utilizando o PDO, baseando-se no exemplo acima.<?php

$host = "localhost";

$user = "root"; $pass = "";

$bd = "banco_teste"; /*O que o PDO pede na conexao?

ex: PDO($dsn,$user,$pass);

mais o que é dsn ?

dsn = tipo_do_banco:host='seu_host';dbname='nome_do_seu_banco';

*/

$dsn = "mysql:host=".$host.";dbname=".$bd; try{

$conexao = new PDO($dsn,$user,$pass); $conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

return $conexao; }catch(PDOException $error){

echo "Erro ao conectar com o banco de dados: ".$error->getMessage();

Page 3: Curso Completo de PHP_PDO

}

?>

O que o PDO pede de diferente na conexão?ex: PDO($dsn,$user,$pass);

Como funciona a estrutura do dsn ?

A estrutura do dsn funciona da seguinte forma:ex: $dsn = “tipo_do_banco:host=seu_host;dbname=nome_do_seu_banco”;resultado: $dsn = “mysql:host=localhost;dbname=banco_teste”;Até ai tudo bem… mas o que quer dizer está linha:$conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

setAttribute – Define um atributo na declaração. Para ver a lista de atributos clique aqui.PDO::ATTR_ERRMODE – relatório de erros.PDO::ERRMODE_EXCEPTION - Atributo filho do atributo ATTR_ERRMODE , este representa um erro gerado pelo PDO.

Endentendo os atributos

Quando você define um atributo no PDO, os próprios possuem valores padrões, e filhos únicos.A sintaxe para a utilização funciona da seguinte forma:setAttribute(atributo, filho_do_atributo);Para isso, veja a lista abaixo , que seta os atributos , e seus filhos alheios.

1. PDO::ATTR_CASE – nomes de colunas força para um caso específico. o Filhos do atributo PDO::ATTR_CASEo PDO::CASE_LOWER – Força nomes de coluna para minúsculas.o PDO::CASE_NATURAL – nomes de colunas deixar como retornados pelo

driver de banco de dados.o PDO::CASE_UPPER – nomes de colunas força para maiúsculas.

2. PDO:: ATTR_ERRMODE – relatório de erros. o Filhos do atributo PDO :: ATTR_ERRMODEo PDO::ERRMODE_SILENT – Basta definir códigos de erro.o PDO::ERRMODE_WARNING – Levante E_WARNING.o PDO::ERRMODE_EXCEPTION – Throw exceções.

3. PDO::ATTR_ORACLE_NULLS – (disponível com todos os drivers, e não apenas da Oracle): Conversão de strings nulas e vazias.

o Filhos do atributo PDO :: ATTR_ORACLE_NULLSo PDO::NULL_NATURAL – Não conversão.o PDO::NULL_EMPTY_STRING – string vazio é convertido para NULL .o PDO::NULL_TO_STRING – NULL é convertido para uma cadeia vazia.

Existem muitos atributos e seus alheios , para isso saiba mais no site do oficial do php clicando aqui.Agora que sabemos mais sobre os atributos devemos saber sobre está linha:}catch(PDOException $error){

O que é o PDOException?Ele representa um erro gerado pelo PDO. Desta forma estamos atribuindo o erro gerado pelo PDO à variável $error.Desta forma devemos apenas chamar a mensagem de error utilizando a variável $error

Page 4: Curso Completo de PHP_PDO

Observem que para mostrar a mensagem de error gerada, eu utilizei:$error->getMessage();

Mas o que é o getMessage()?getMessage() — Obtém a mensagem da exceção.

Aula 03 – Selecionando Dados com PDONesta aula iremos aprender a fazer a seleção, ou listagem de dados com PDO. Lembrando que iremos fazer as comparações e observações devidas com o modo primitivo do PHP.Primeiramente temos o primeiro exemplo, onde iremos fazer a seleção dos dados utilizando o modo primitivo do php. Veja o exemplo abaixo:< ?php include_once("conexao.php"); /*incluindo arquivo de conexao da aula passada*/

$sql = "SELECT * FROM alunos"; $query = mysql_query($sql);

if(mysql_num_rows($query) > 0){

while($linha_alunos = mysql_fetch_array($query)){ echo $linha_alunos['nome_aluno']."<br />";

}

}else{}

?>

Simples não?Lembrando que fizemos a inclusão do arquivo de conexão da aula passada.Se você não visitou a aula passada clique aqui.Agora que você já sabe como funciona a seleção de dados utilizando o modo primitivo, iremos agora fazer o mesmo utilizando o PDO.Primeiramente iremos fazer uma seleção comum sem a utilização de condições (WHERE).

SELEÇÃO COMUM COM PDO< ?php

include_once("conexao.php");

function listar_alunos(){ try{

$listar = $conexao->query("SELECT * FROM alunos"); $listar->execute();

if($listar->rowCount() > 0){

return $listar->fetchAll(PDO::FETCH_ASSOC);

Page 5: Curso Completo de PHP_PDO

}else{

echo "Não existem alunos cadastrados na base."; }

}catch(PDOException $error){

echo "Error ao listar alunos: ".$error->getMessage();

}

}

$alunos = listar_alunos();

foreach($alunos as $aluno): echo $aluno['nome_aluno']."<br />";

endforeach;

?>

Você poderia também, utilizar o FETCH_OBJ ao invés de FETCH_ASSOC , contudo nosso foreach ficaria desta forma:foreach($alunos as $aluno): echo $aluno->nome_aluno."<br />";

endforeach;

O resultado de todo o código utilizando FETCH_OBJ seria:< ?php

include_once("conexao.php");//inclusao do arquivo de conexao da aula passada

function listar_alunos(){ try{

$listar = $conexao->query("SELECT * FROM alunos"); $listar->execute();

if($listar->rowCount() > 0){

return $listar->fetchAll(PDO::FETCH_OBJ); }else{

echo "Não existem alunos cadastrados na base."; }

}catch(PDOException $error){

echo "Error ao listar alunos: ".$error->getMessage();

}

}

Page 6: Curso Completo de PHP_PDO

$alunos = listar_alunos();

foreach($alunos as $aluno): echo $aluno->nome_aluno."<br />";

endforeach;

?>

<h3>SELEÇÃO COMPOSTA COM PDO</h3>

A seleção composta já é diferente, pois iremos utilizar <strong>condições</strong> , e devemos utilizar o <strong>prepare</strong> do PDO.O método <strong>query</strong> é utilizado apenas para seleções comuns que não envolvem condições (WHERE).

Exemplo de seleção composta:

<?php include_once("conexao.php");//inclusao do arquivo de conexao da aula passada

function listar_alunos_com_condicao(){ try{

$idade = 15;/*aqui defini a idade desejada para condicao*/ $listar = $conexao->prepare("SELECT * FROM alunos WHERE idade = :idade");

$listar->bindValue(":idade",$idade);/*O bindValue protege os dados que você está passando , seta o valor para o parametro.*/ $listar->execute();

if($listar->rowCount() > 0){

return $listar->fetch(PDO::FETCH_ASSOC); }else{

echo "Não existem alunos cadastrados na base."; }

}catch(PDOException $error){

echo "Error ao listar alunos: ".$error->getMessage();

}

}

$alunos = listar_alunos_com_condicao();

foreach($alunos as $aluno): echo $aluno['nome_aluno']."<br />";

Page 7: Curso Completo de PHP_PDO

endforeach;

?>

Observem que no exemplo acima, eu não utilizei o fetchAll, mas sim apenas o fetch, pois estou querendo retornar apenas um valor específico informado em minha “condição”.Lembrando também que ao invés de utilizar bindValue, podemos utilizar também bindParam, que irá retornar o mesmo valor , contudo você poderá também especificar o tipo do parâmetro ( type ) passado e o tamanho ( lenght ) .Exemplo:$listar->bindParam(":idade",$idade,PDO::PARAM_INT,3);

Desta forma estou especificando que o valor passado é do tipo inteiro (PARAM_INT), e o tamanho é 3. Ou seja, não existe pessoa com idade maior que 3 digitos correto? (Por favor, não inclua as múmias neste rolo).

E para tipos strings? Como seria?

$listar->bindParam(":aluno_nome",$aluno_nome,PDO::PARAM_STR, 255);

Já no exemplo acima, estou informando que o parâmetro aluno_nome é do tipo string(PARAM_STR) e o tamanho máximo é de 255 caracteres.Caso queiram saber mais sobre bindParam’s clique aquiAgora, irei mostrar uma situação que muitos alunos têm dúvida. O famoso ponto de interrogação.Quando passamos parâmetros, podemos também utilizar o ponto de interrogação, e logo após a posição do índice que pretendemos atribuir o valor corrente. Exemplo:<?php

include_once("conexao.php");

function listar_alunos_com_condicao(){ try{

$idade = 15; $listar = $conexao->prepare("SELECT * FROM alunos WHERE idade = ?");

$listar->bindValue(1,$idade);

$listar->execute();

if($listar->rowCount() > 0){

return $listar->fetch(PDO::FETCH_ASSOC); }else{

echo "Não existem alunos cadastrados na base."; }

}catch(PDOException $error){

echo "Error ao listar alunos: ".$error->getMessage();

}

Page 8: Curso Completo de PHP_PDO

}

$alunos = listar_alunos_com_condicao();

foreach($alunos as $aluno): echo $aluno['nome_aluno']."<br />";

endforeach;

?>

Vejam que as linhas modificadas foram as listadas abaixo:$listar = $conexao->prepare("SELECT * FROM alunos WHERE idade = ?");

$listar->bindValue(1,$idade);/*O bindvalue protege os

Contudo, fica a pergunta. E se eu quisesse passar dois parâmetros na condição? Como ficaria?

Veja o exemplo abaixo:<?php

include_once("conexao.php");

function listar_alunos_com_condicao(){ try{

$idade = 15; $sobrenome = "Alberto";

$listar = $conexao->prepare("SELECT * FROM alunos WHERE idade = ? AND sobrenome = ?"); $listar->bindValue(1,$idade);

$listar->bindValue(2,$sobrenome);

$listar->execute();

if($listar->rowCount() > 0){

return $listar->fetch(PDO::FETCH_ASSOC); }else{

echo "Não existem alunos cadastrados na base."; }

}catch(PDOException $error){

echo "Error ao listar alunos: ".$error->getMessage();

}

}

$alunos = listar_alunos_com_condicao();

Page 9: Curso Completo de PHP_PDO

foreach($alunos as $aluno): echo $aluno['nome_aluno']."<br />";

endforeach;

?>

Concluindo nosso exemplo, vejam as linhas alteradas.$sobrenome = "Alberto";$listar = $conexao->prepare("SELECT * FROM alunos WHERE idade = ? AND sobrenome = ?");

$listar->bindValue(1,$idade);/*O bindvalue protege os dados que você está passando.*/$listar->bindValue(2,$sobrenome);

Viram como é simples fazer seleção com o PDO?

Aula 04 – Cadastrando Dados com PDONesta aula iremos aprender a fazer cadastros com o PDO.Primeiramente veremos um exemplo utilizando o modo primitivo do php.

CADASTRANDO SEM UTILIZAR PDO<?php

include_once("conexao.php");/*Inclui arquivo de conexao com o bd*/

$nome = "Carlos";$sobrenome = "Alberto";

$sql = "INSERT INTO alunos (nome,sobrenome) VALUES ('$nome','$sobrenome')";

$query = mysql_query($sql);

if($query){

echo "Aluno cadastrado com sucesso!";

}else{

echo "Erro ao cadastrar aluno.";

}

?>

Vejam que o cadastro do primitivo fica totalmente vulnerável.Veja agora, o exemplo acima utilizando PDO.

CADASTRANDO UTILIZANDO PDO

<?php include_once("conexao.php");

Page 10: Curso Completo de PHP_PDO

$nome = "Carlos"; $sobrenome = "Alberto";

try{

$cadastrar = $conexao->prepare("INSERT INTO alunos (nome,sobrenome) VALUES (:nome,:sobrenome)";

$cadastrar->bindValue(":nome",$nome);

$cadastrar->bindValue(":sobrenome",$sobrenome);

$cadastrar->execute;

if($cadastrar->rowCount() > 0){

echo "Aluno cadastrado com sucesso!"; }else{

echo "Erro ao cadastrar aluno."; }

}catch(PDOException $error){

echo "Erro ao cadastrar aluno: ". $error->getMessage();

}

?>

Lembrando, que com a utilização do PDO, eu não precisei deixar o parâmetro dentro de aspas simples, como foi utilizado no modo primitivo.Veja:$cadastrar = $conexao->prepare("INSERT INTO alunos (nome,sobrenome) VALUES (:nome,:sobrenome)";

Vimos também que utilizei uma condicional diferente, veja:if($cadastrar->rowCount() > 0){

echo "Aluno cadastrado com sucesso!";

}else{

echo "Erro ao cadastrar aluno.";

}

Fica a pergunta: Mas o rowCount não funciona apenas para selecionar dados?

Resposta: Não! O rowCount , neste caso está com a função do antigo mysql_affected_rows, que retorna o número de linhas afetadas.Em nosso caso, 1 cadastrado foi executado com sucesso , resultando então na mensagem “Aluno cadastrado com sucesso!”;Lembrando que poderíamos também fazer nosso cadastro utilizando os pontos de interrogação.Exemplo:<?php

include_once("conexao.php");

Page 11: Curso Completo de PHP_PDO

$nome = "Carlos"; $sobrenome = "Alberto";

try{

$cadastrar = $conexao->prepare("INSERT INTO alunos (nome,sobrenome) VALUES (?,?)";

$cadastrar->bindValue(1,$nome);

$cadastrar->bindValue(2,$sobrenome);

$cadastrar->execute;

if($cadastrar->rowCount() > 0){

echo "Aluno cadastrado com sucesso!"; }else{

echo "Erro ao cadastrar aluno."; }

}catch(PDOException $error){

echo "Erro ao cadastrar aluno: ". $error->getMessage();

}

?>

CADASTRANDO COM PDO UTILIZANDO ARRAY

<?php include_once("conexao.php");

$nome = "Carlos"; $sobrenome = "Alberto";

$dados = array(

'nome'=> $nome,

'sobrenome'=> $sobrenome

);

try{

$cadastrar = $conexao->prepare("INSERT INTO alunos (nome,sobrenome)

VALUES (:nome,:sobrenome)";

foreach($dados as $indice => $valor):

$cadastrar->bindValue(":$indice",$valor);

Page 12: Curso Completo de PHP_PDO

endforeach;

$cadastrar->execute;

if($cadastrar->rowCount() > 0){

echo "Aluno cadastrado com sucesso!"; }else{

echo "Erro ao cadastrar aluno."; }

}catch(PDOException $error){

echo "Erro ao cadastrar aluno: ". $error->getMessage();

}

?>

CADASTRANDO COM PDO UTILIZANDO ARRAY E INTERROGAÇÃO

<?php include_once("conexao.php");

$nome = "Carlos"; $sobrenome = "Alberto";

$dados = array(

1=> $nome,

2=> $sobrenome

);

try{

$cadastrar = $conexao->prepare("INSERT INTO alunos (nome,sobrenome)

VALUES (?,?)";

foreach($dados as $indice => $valor):

$cadastrar->bindValue($indice,$valor);

endforeach;

$cadastrar->execute;

if($cadastrar->rowCount() > 0){

echo "Aluno cadastrado com sucesso!"; }else{

echo "Erro ao cadastrar aluno.";

Page 13: Curso Completo de PHP_PDO

}

}catch(PDOException $error){

echo "Erro ao cadastrar aluno: ". $error->getMessage();

}

?>

Simples, fácil e seguro utilizar o PDO para fazer nosso INSERT né?

Aula 05 – Deletando Dados com PDONa aula de hoje iremos aprender a deletar dados do banco de dados utilizando o super PDO =)Primeiramente, como toda aula, vejamos um exemplo utilizando o modo primitivo, ou simples do php, como muitos dizem.

DELETANDO SEM A UTILIZAÇÃO DO PDO

<?php include_once("conexao.php");

$matricula = $_GET['matricula']; $sql = "DELETE * FROM alunos WHERE matricula = '$matricula'";

$query = mysql_query($sql);

if($query){

echo "Aluno deletado com sucesso!";

}else{

echo "Não foi possível deletar o aluno.";

}

?>

Lembrou como era utilizado o modo primitivo do php ? Agora , veja o mesmo utilizando PDO.

DELETANDO UTILIZANDO O PDO

<?php include_once("conexao.php");

try{

$matricula = $_GET['matricula'];

$deletar = $conexao->prepare("DELETE * FROM alunos WHERE matricula = :matricula");

$deletar->bindValue(":matricula",$matricula);

$deletar->execute();

Page 14: Curso Completo de PHP_PDO

if($deletar->rowCount() > 0){

echo "Aluno deletado com sucesso!";

}else{

echo "Não foi possível deletar o aluno.";

}

}catch(PDOException $error){

echo "Error ao deletar aluno: ". $error->getMessage();}

?>

LEMBRANDO TAMBÉM, QUE PODERIAMOS UTILIZAR OS FAMOSOS PONTOS DE INTERROGAÇÃO PARA DELETAR.Exemplo:< ?php

include_once("conexao.php");

try{

$matricula = $_GET['matricula'];

$deletar = $conexao->prepare("DELETE * FROM alunos WHERE matricula = ?"); $deletar->bindValue(1,$matricula);

$deletar->execute();

if($deletar->rowCount() > 0){

echo "Aluno deletado com sucesso!";

}else{

echo "Não foi possível deletar o aluno.";

}

}catch(PDOException $error){

echo "Error ao deletar aluno: ". $error->getMessage();}

?>

Simples, e descomplicado.

Aula 06 – Atualizando Dados com PDOHoje iremos então, finalizar nosso CRUD (create – read- update – delete = criar – ler – atualizar – deletar).

Page 15: Curso Completo de PHP_PDO

Na aula de hoje aprenderemos a atualizar os dados utilizando o PDO. Mantendo a rotina exposta em todas as aulas do curso, primeiramente irei mostrar o modo tradicional ou primitivo do php. Logo após, o mesmo exemplo utilizando o PDO.

ATUALIZANDO DADOS SEM UTILIZAR PDO

<?php include_once("conexao.php");/*Inclui arquivo de conexao com o bd*/

$matricula = $_POST['matricula']; $nome = $_POST['nome'];

$sobrenome = $_POST['sobrenome'];

$sql = "UPDATE alunos SET nome = '$nome',

sobrenome = '$sobrenome'

WHERE

matricula = '$matricula'

";

$query = mysql_query($sql);

if($query){

echo "Aluno atualizado com sucesso!";

}else{

echo "Erro ao atualizar aluno.";

}

?>

ATUALIZANDO DADOS UTILIZANDO PDO

<?php include_once("conexao.php");/*Inclui arquivo de conexao com o bd*/

$matricula = $_POST['matricula']; $nome = $_POST['nome'];

$sobrenome = $_POST['sobrenome'];

$atualizar = $conexao->prepare("UPDATE alunos SET nome = :nome,

sobrenome = :sobrenome

Page 16: Curso Completo de PHP_PDO

WHERE

matricula = :matricula

");

$atualizar->bindValue(":nome",$nome);

$atualizar->bindValue(":sobrenome",$sobrenome);

$atualizar->bindValue(":matricula",$matricula);

$atualizar->execute;

if($atualizar->rowCount() > 0){

echo "Aluno atualizado com sucesso!"; }else{

echo "Erro ao atualizar aluno."; }

?>

PERGUNTA:PODERÍAMOS UTILIZAR OS PONTOS DE INTERROGAÇÃO ? SIM. VEJA:

<?php include_once("conexao.php");/*Inclui arquivo de conexao com o bd*/

$matricula = $_POST['matricula']; $nome = $_POST['nome'];

$sobrenome = $_POST['sobrenome'];

$atualizar = $conexao->prepare("UPDATE alunos SET nome = ?,

sobrenome = ?

WHERE

matricula = ?");

$atualizar->bindValue(1,$nome);

$atualizar->bindValue(2,$sobrenome);

$atualizar->bindValue(3,$matricula);

$atualizar->execute;

if($atualizar->rowCount() > 0){

Page 17: Curso Completo de PHP_PDO

echo "Aluno atualizado com sucesso!";

}else{

echo "Erro ao atualizar aluno.";

}

?>

Pergunta: Poderíamos utilizar arrays para fazer tal atualização? Seria ótimo para realizar múltiplas atualizações de dados correto?Resposta: Sim, podemos utilizar arrays. E, sim seria ótimo para manipulação múltipla de dados.

EXEMPLO UTILIZANDO ARRAY – SEM A UTILIZAÇÃO DOS PONTOS DE INTERROGAÇÃO.<?php

include_once("conexao.php");/*Inclui arquivo de conexao com o bd*/

$matricula = $_POST['matricula']; $nome = $_POST['nome'];

$sobrenome = $_POST['sobrenome'];

$dados = array( 'nome'=>$nome,

'sobrenome'=>$sobrenome,

'matricula'=>$matricula

);

$atualizar = $conexao->prepare("UPDATE alunos SET nome = :nome,

sobrenome = :sobrenome

WHERE

matricula = :matricula

");

foreach($dados as $indice => $valor): $atualizar->bindValue(":$indice",$valor);

endforeach;

$atualizar->execute;

if($atualizar->rowCount() > 0){

echo "Aluno atualizado com sucesso!";

Page 18: Curso Completo de PHP_PDO

}else{

echo "Erro ao atualizar aluno."; }

?>

EXEMPLO UTILIZANDO ARRAY – UTILIZANDO OS PONTOS DE INTERROGAÇÃO.<?php

include_once("conexao.php");/*Inclui arquivo de conexao com o bd*/

$matricula = $_POST['matricula']; $nome = $_POST['nome'];

$sobrenome = $_POST['sobrenome'];

$dados = array( 1=>$nome,

2=>$sobrenome,

3=>$matricula

);

$atualizar = $conexao->prepare("UPDATE alunos SET nome = ?,

sobrenome = ?

WHERE

matricula = ?");

foreach($dados as $indice => $valor):

$atualizar->bindValue($indice,$valor);

endforeach;

$atualizar->execute;

if($atualizar->rowCount() > 0){

echo "Aluno atualizado com sucesso!";

}else{

echo "Erro ao atualizar aluno.";

}

?>

Viram como é simples fazer atualizações utilizando o PDO?