Você está na página 1de 7

19/05/2016

CRUDcomPHPPDO

www.devmedia.com.br
[versoparaimpresso]
Linkoriginal:http://www.devmedia.com.br/articles/viewcomp.asp?comp=28873

CRUD com PHP PDO


Veja nesse artigo como a realizar as operaes de
CRUD usando a API PDO do PHP.

Olpessoal,emumartigoanteriorfalamosumpoucosobreanovaAPIPDO.Vimos
comofazerparaseconectarumbancodedadosMySQLecomoretornarvalores
deumbancodedados.
Nesseartigoiremoscontinuarfalandosobreesseassunto,squedessavez
iremosvercomofazemospararealizarumCRUD.
UmaobservaointeressantequeoPDOforneceumacamadadeabstraocom
obancodedados,issoocorreporqueoPDOfazconexocomdiversosbancosde
dadosdiferentes,comoMySQL,PLSQL,damesmaforma,tendoanicacoisa
diferenteastringdeconexo.

Mas anal Ricardo, o que um CRUD?


OCRUDvemdoingls,daspalavras(Create,Read,Update,Delete)quequerdizer
basicamenteas4(quatro)principaisoperaescomumbancodedados(inserir,
ler,atualizar,excluir).
Quandopensamosemqualquerwebsitedinmicoousistemasemgerais,a
primeiracoisaquevemnanossacabeaoCRUD,semelenadafunciona,pois
comelequerealizamosasinteraescomobancodedados.

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28873

1/7

19/05/2016

CRUDcomPHPPDO

ComoapartedoRead(ler)nsjvimosnoartigoanteriorjuntocomaconexo
(verlinknoinciodoartigo),nesseartigoiremostratarapenasoInsert,updatee
delete.
VamoscomearcomoInsertusandooPDO.

Insert
AntesdevermoscomofazercomoPDO,iremosvercomoinserirdadosnobanco
dedadoscomaapimysql,aqualnomaisrecomendadoseuuso.
Listagem1:InserindodadosnatabelacomAPImysql

<?php

$nome=$_POST["nome"];
$email=$_POST["email"];
$tel=$_POST["tel"];

include_once'conexao.php';

$sql="insertintoclientevalues(null,
'".$nome."','".$email."','".$tel."')";
//echo$sql;

if(mysql_query($sql,$con)){
$msg="Gravadocomsucesso!";
}else{
$msg="Erroaogravar!";
}
mysql_close($con);
?>

Comopodemosvermuitosimples,masfoiconsideradodeprecated,ouseja,foi
descontinuadopelagaleradoPHP,vamosvercomopodemosfazeroinsertusando
PHPPDO.
Listagem2:InsertusandoPHPPDO

<?php

try{
$pdo=newPDO('mysql:host=localhost;dbname=meuBancoDeDados',$username,$password);
$pdo>setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$stmt=$pdo>prepare('INSERTINTOminhaTabelaVALUES(:nome)');
$stmt>execute(array(

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28873

2/7

19/05/2016

CRUDcomPHPPDO

':nome'=>'RicardoArrigoni'
));

echo$stmt>rowCount();
}catch(PDOException$e){
echo'Error:'.$e>getMessage();

?>

Podemosverquenomudamuitacoisanocdigo,apenasaformacomogerado,
usandotry..catcheasfunesdecomunicaotambm,masderestocontinua
bemparecida.
Nota:EssamaneiraaconsideradaidealpelamaioriadosdesenvolvedoresPHP
hojeemdia,mastambmexisteamysqli,quefuncionabemparecidocoma
mysql,comadiferenadeuminofinal.

Update
Paraatualizarumregistronatabeladobancodedadosutilizamosocomando
UPDATEemSQL,squeessaparteumpoucomaiscomplexa,poisnaverdade
vocvaiprecisarlistarosregistros,paraaisimescolheroquequereditare
atualizar.
Nonossoexemplonoireimeatentarnaformadereceberessesdadosparaai
simatualizaremsi,vamosdarnfaseapenasemcomofazeronossocdigode
atualizar.
ParafazeraatualizaousandoaAPImysqlsfazerassim:
Listagem3:Updatecommysql_

<?php

$nome=$_POST["nome"];
$email=$_POST["email"];
$tel=$_POST["tel"];
$id=$_POST["id"];

include_once'conexao.php';

$sql="updateclienteset
nome='".$nome."',email='".$email."',telefone='".$tel."'
whereidcliente=".$id;

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28873

3/7

19/05/2016

CRUDcomPHPPDO

if(mysql_query($sql,$con)){
$msg="Atualizadocomsucesso!";
}else{
$msg="Erroaoatualizar!";
}
mysql_close($con);

?>

AgorautilizandooPDObastautilizaressecdigo:
Listagem4:UpdateusandoPDO

<?php

$id=5;
$nome="NovonomedoRicardo";

try{
$pdo=newPDO('mysql:host=localhost;dbname=meuBancoDeDados',$username,$password);
$pdo>setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$stmt=$pdo>prepare('UPDATEminhaTabelaSETnome=:nomeWHEREid=:id');
$stmt>execute(array(
':id'=>$id,
':nome'=>$nome
));

echo$stmt>rowCount();
}catch(PDOException$e){
echo'Error:'.$e>getMessage();
}
?>

LembrandoqueestamosusandoexemplosdistintosemcadaAPI,oquequeremos
mostrarcomofuncionaasfunesdoPDO,fiquelivreparaadaptaraoseu
projetodamaneiraqueacharmelhor.

Delete

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28873

4/7

19/05/2016

CRUDcomPHPPDO

Afunodedeletepraticamenteigualaoinsertnaprtica,adiferenaqueao
invsdeinserirdados,vamosestarexcluindoelesdatabela,paraissoprecisamos
identificaroregistrodealgumamaneira(normalmenteusamosoprprioIDdo
registro)paraentoexcluirdatabela.
Excluindodadosusandoomysql_daformaquemostramosnalistagem5:
Listagem5:Excluindodadosusandomysql_

<?php

$id=$_GET["id"];
include_once'conexao.php';

$sql="deletefromclientewhereidcliente=".$id;

if(mysql_query($sql,$con)){
$msg="Deletadocomsucesso!";
}else{
$msg="Erroaodeletar!";
}
mysql_close($con);

?>

PararealizaraexclusocomoPDOficariadessaformanalistagem6:
Listagem6:ExcluindocomPDO

<?php

$id=5;

try{
$pdo=newPDO('mysql:host=localhost;dbname=meuBancoDeDados',$username,$password);
$pdo>setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$stmt=$pdo>prepare('DELETEFROMminhaTabelaWHEREid=:id');
$stmt>bindParam(':id',$id);
$stmt>execute();

echo$stmt>rowCount();
}catch(PDOException$e){
echo'Error:'.$e>getMessage();
}
?>

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28873

5/7

19/05/2016

CRUDcomPHPPDO

ComopodemosverestamosutilizandoobindParamecasoutilizeelesempredeve
serpassadoumavarivelnosegundoparmetro,casocontrarioteruma
mensagemdeerro.

SELECT
Abaixopossvelverumcdigosimplesdeexemplodecomoexecutarumselect
nobancodedadosusandoPDO.
Listagem7:SelectemPDO
<?php
$consulta=$pdo>query("SELECTnome,usuarioFROMlogin;");

while($linha=$consulta>fetch(PDO::FETCH_ASSOC)){
echo"Nome:{$linha['nome']}Usurio:{$linha['usuario']}<br/>";
}
?>

Concluso
Nesteartigonoabordeiasconexesenemalistagemdedados,focamosapenas
emaprendercomoinserir,atualizareexcluirregistrosnobancodedadosMySQL
utilizandooPDOdoPHP.
Setiveremalgumadvida,podemficaravontadeemusaroscomentriosabaixo
paraperguntarquetereiprazeremrespondlas.
Esperoquetenhamgostadoeatoprximoartigo.

Veja tambm
IntroduoaoPHPPDO
UsandoPDO(PHPDataObjects)paraaumentaraprodutividade
BibliotecaPDOPHP

RicardoArrigoni

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28873

6/7

19/05/2016

http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28873

CRUDcomPHPPDO

7/7