Artigo: CRUD com PHP PDO - Gigasystems

PHP

Em por

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

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.