Artigo: CRUD com PHP PDO - Gigasystems

PHP

Em por

crud-com-php-pdo
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.

Olá, deixe seu comentário para CRUD com PHP PDO

Já temos 4 comentário(s). DEIXE O SEU :)
Cassio Dias

Cassio Dias

Não seria melhor substituir os parametros do prepare com bindValue ou bindParam em vez de fazer isso no execute, já que esses métodos fazem tratativas contra sqlinjection
★★★★★DIA 11.07.20 00h01RESPONDER
N/A
Enviando Comentário Fechar :/
Leonardo Martins

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.

★★★★★DIA 14.07.20 10h28RESPONDER
N/A
Enviando Comentário Fechar :/
Alex De Moura

Alex De Moura

Muito boa a explicação código limpo e simples. Para mim foi muito valioso. Obrigado.
★★★★★DIA 07.04.20 14h24RESPONDER
Leonardo Martins
Enviando Comentário Fechar :/
Matheus Henrique

Matheus Henrique

Ola queria saber como inserir dados do formulário enviado via POST no banco de dados que n entendi muito bem como fazer agradeço des de já :)
★★★★★DIA 08.12.18 20h09RESPONDER
N/A
Enviando Comentário Fechar :/
Enviando Comentário Fechar :/

Veja Também:

Artigos Relacionados a categoria: PHP

Soluções

...CURTIU? AINDA NÃO VIU NOSSO PORTFÓLIO?


Se ainda não viu nosso Portfólio e quer conhecer um pouco mais... aproveite, veja agora mesmo nossos Cases de Sucesso e tenha seu site nos padrões atuais preparado para maioria dos dispositivos e navegadores.