PHP
CRUD com PHP PDO
Uma observação interessante é que o PDO fornece uma camada de abstração com o banco de dados, isso ocorre porque o PDO faz conexão com diversos bancos de dados diferentes, como MySQL, PLSQL, da mesma forma, tendo a única coisa diferente a string de conexão.
Mas afinal, o que é um CRUD?
O CRUD vem do inglês, das palavras (Create, Read, Update, Delete) que quer dizer basicamente as 4 (quatro) principais operações com um banco de dados(inserir, ler, atualizar, excluir).
Quando pensamos em qualquer website dinâmico ou sistemas em gerais, a primeira coisa que vem na nossa cabeça é o CRUD, sem ele nada funciona, pois é com ele que realizamos as interações com o banco de dados.
Vamos começar com o Insert usando o PDO.
Insert
Antes de vermos como fazer com o PDO, iremos ver como inserir dados no banco de dados com a api mysql, a qual não é mais recomendado seu uso.
Inserindo dados na tabela com API mysql
<?php //recebe os parâmetros via POST $nome = $_POST["nome"]; $email = $_POST["email"]; $tel = $_POST["tel"]; //inclui o arquivo de conexão include_once 'conexao.php'; //preapara a query $sql = "INSERT INTO cliente VALUES(null,'".$nome."','".$email."','".$tel."')"; //echo $sql; if(mysql_query($sql,$con)){ $msg = "Gravado com sucesso!"; }else{ $msg = "Erro ao gravar!"; } //fecha conexão mysql_close($con); ?>
Como podemos ver é muito simples, mas foi considerado deprecated, ou seja, foi descontinuado pela galera do PHP, vamos ver como podemos fazer o insert usando PHP PDO.
Insert usando PHP PDO
<?php try { //defino os parâmetros de conexão com o banco de dados $pdo = new PDO('mysql:host=localhost;dbname=meuBancoDeDados', $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //preparo minha query a ser executada $stmt = $pdo->prepare('INSERT INTO minhaTabela VALUES(:pnome)'); //a variável :pnome recebe essa sintaxe por meio que padrão, onde os : mostra que ela vai receber o valor e o p antes do nome vem de parâmetro $stmt->execute(array( ':pnome' => 'Ricardo Arrigoni' )); echo $stmt->rowCount(); }catch(PDOException $e) { echo 'Error: ' . $e->getMessage(); } ?>
Podemos ver que não muda muita coisa no código, apenas a forma como é gerado, usando try..catch e as funções de comunicação também, mas de resto continua bem parecida. Nota: Essa maneira é a considerada ideal pela maioria dos desenvolvedores PHP hoje em dia, mas também existe a mysqli, que funciona bem parecido com a mysql, com a diferença de um “i” no final.
Update
Para atualizar um registro na tabela do banco de dados utilizamos o comando UPDATE em SQL, só que essa parte é um pouco mais complexa, pois na verdade você vai precisar listar os registros, para ai sim escolher o que quer editar e atualizar.
No nosso exemplo não irei me atentar na forma de receber esses dados para ai sim atualizar em si, vamos dar ênfase apenas em como fazer o nosso código de atualizar.
Para fazer a atualização usando a API mysql é só fazer assim:
Update com mysql
<?php //recebe os parâmetros via POST $nome = $_POST["nome"]; $email = $_POST["email"]; $tel = $_POST["tel"]; //inclui o arquivo de conexão include_once 'conexao.php'; //preapara a query $sql = "update cliente set nome = '".$nome."', email = '".$email."',telefone = '".$tel."' where idcliente = ".$id; //se a query estiver correta os dados serão atualizados if(mysql_query($sql,$con)){ $msg = "Atualizado com sucesso!"; }else{ $msg = "Erro ao atualizar!"; } //fecha conexão mysql_close($con); ?>
Agora utilizando o PDO basta utilizar esse código:
Update usando PDO
<?php //pega o id que se deseja modificar $id = 5; //O novo valor do campo a ser modificado $nome = "Novo nome do Ricardo"; // try { //defino os parâmetros de conexão com o banco de dados $pdo = new PDO('mysql:host=localhost;dbname=meuBancoDeDados', $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //preparo minha query $stmt = $pdo->prepare('UPDATE minhaTabela SET nome = :pnome WHERE id = :pid'); //executo o comando da query passando como parâmetro minhas variáveis $stmt->execute(array( ':pid' => $id, ':pnome' => $nome )); echo $stmt->rowCount(); } catch(PDOException $e) { echo 'Error: ' . $e->getMessage(); } ?>
Lembrando que estamos usando exemplos distintos em cada API, o que queremos é mostrar como funciona as funções do PDO, fique livre para adaptar ao seu projeto da maneira que achar melhor.
Delete
A função de delete é praticamente igual ao insert na prática, a diferença é que ao invés de inserir dados, vamos estar excluindo eles da tabela, para isso precisamos identificar o registro de alguma maneira(normalmente usamos o próprio ID do registro) para então excluir da tabela.
Excluindo dados usando o mysql_ é da forma que mostramos abaixo:
Excluindo dados usando mysql
<?php //recebe o ID passado via GET $id = $_GET["id"]; //inclui o arquivo de conexão include_once 'conexao.php'; //prepara minha query $sql = "delete from cliente where idcliente = ".$id; //se estiver tudo ok executa query apagando registro no BD if(mysql_query($sql,$con)){ $msg = "Deletado com sucesso!"; }else{ $msg = "Erro ao deletar!"; } //fecha conexão mysql_close($con); ?>
Para realizar a exclusão com o PDO ficaria dessa forma abaixo:
Excluindo com PDO
<?php //id de quem se deseja apagar o registro $id = 5; try { //faz a conexão com o BD $pdo = new PDO('mysql:host=localhost;dbname=meuBancoDeDados', $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //prepara a query $stmt = $pdo->prepare('DELETE FROM minhaTabela WHERE id = :pid'); //passa os parametros para a query $stmt->bindParam(':pid', $id); //executa a query $stmt->execute(); echo $stmt->rowCount(); } catch(PDOException $e) { echo 'Error: ' . $e->getMessage(); } ?>
Como podemos ver estamos utilizando o bindParam e caso utilize ele sempre deve ser passado uma variável no segundo parâmetro, caso contrario terá uma mensagem de erro.
SELECT
Abaixo é possível ver um código simples de exemplo de como executar um select no banco de dados usando PDO.
Select em PDO
<?php //preparo a query $consulta = $pdo->query("SELECT nome, usuario FROM login;"); //faço um laço while para enquanto tiver registros no banco ele vai pegando um a um até acabar while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) { echo "Nome: {$linha['nome']} - Usuário: {$linha['usuario']}<br />"; } ?>
Conclusão
Neste artigo não abordei as conexões e nem a listagem de dados, focamos apenas em aprender como inserir, atualizar e excluir registros no banco de dados MySQL utilizando o PDO do PHP.
Se tiverem alguma dúvida, podem ficar a vontade em usar os comentários abaixo para perguntar que terei prazer em respondê-las.
Espero que tenham gostado e até o próximo artigo e bons estudos.
Gigasystems Login:
Informe seu e-mail abaixo para continuar!
XVeja Também:
Artigos Relacionados a categoria: PHP
Cotações para compra e venda de Moedas estrangeiras com PHP
27 July de 2016
Gerenciador de dependências Composer
14 January de 2016
Erro ao acessar um arquivo externo com o comando file_get_content
04 November de 2015
Baixando anexo do email no servidor com IMAP e PHP
27 August de 2015
Olá, deixe seu comentário para CRUD com PHP PDO
Claudio Scoralick
Cassio Dias
Leonardo Martins
Com certeza utilizar o bind é mais correto, porém esse exemplo foi utilizado vários jeitos de se fazer, somente dando uma introdução do que é possível para iniciantes, mas o correto é usar bind sim, apesar que os frameworks de hoje em dia, já fazem isso automaticamente para nós.
Alex De Moura
Matheus Henrique