PHP básico: persistindo e acessando dados no MySQL

Veja neste artigo como persistir e acessar dados em um banco MySQL utilizando PHP, através da criação de um cadastro básico.

Quando falamos em sistemas web nos dias de hoje é impossível não pensar em um cliente consumindo dados salvos em uma base, por tanto é imprescindível que um desenvolvedor tenha o conhecimento para tratar os dados utilizados pelo cliente através da programação.

Para entendermos como funciona o tratamento dos dados, vamos criar um cadastro de livros, onde o cliente poderá: ver os livros cadastrados, editar e inserir novos livros no banco. O famoso CRUD (create/read/update/delete).

Seguindo uma lógica de implementação, iremos primeiramente partir pela criação do banco de dados.

CREATE DATABASE biblioteca; use biblioteca; CREATE TABLE IF NOT EXISTS `livro` ( `id_livro` int(11) NOT NULL AUTO_INCREMENT, `cod_livro` int(11) NOT NULL, `nome_livro` varchar(150) NOT NULL, `desc_livro` varchar(150) NOT NULL, PRIMARY KEY (`id_livro`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Listagem 1. Arquivo para gerar a tabela livro – script.sql

Executando o código acima, criamos nosso banco denominado “biblioteca” e nossa tabela denominada “livro”, na qual vamos armazenar os dados dos livros.

Para que possamos iniciar a abstração dos dados, vamos criar uma classe denominada Conexao, onde definimos todas as transações que serão feitas e os dados para acesso ao servidor MySQL.

//Variáveis de acesso Db define('DB_SERVER', 'localhost'); define('DB_NAME', 'biblioteca'); define('DB_USERNAME', 'root'); define('DB_PASSWORD', ''); //inicio da classe de conexao class Conexao { var $db, $conn; public function __construct($server, $database, $username, $password){ $this->conn = mysql_connect($server, $username, $password); $this->db = mysql_select_db($database,$this->conn); } ...
Listagem 2. Criando o arquivo conexao.php

No código acima, temos a definição dos parâmetros de acesso à base de dados, a criação da classe Conexao e seu respectivo construtor. No construtor, abrimos a conexão com a função do MySQL, mysql_connect, passando o servidor, nome do usuário e a senha como parâmetro. Em seguida, selecionamos a tabela que iremos trabalhar usando a função mysql_select_db, passando como parâmetro o nome da tabela e a conexão atual.

Dando início ao nosso CRUD, vamos criar nossa função insert no arquivo conexao.php:

/** * Função para inserir dados na tabela * @param array $dados Array contendo os dados a serem inseridos * @param string $tabela tabela que será inserido os dados */ public function insert($tabela, $dados) { foreach ($dados as $key => $value) { $keys[] = $key; $insertvalues[] = '\'' . $value . '\''; } $keys = implode(',', $keys); $insertvalues = implode(',', $insertvalues); $sql = "INSERT INTO $tabela ($keys) VALUES ($insertvalues)"; return $this->executar($sql); }
Listagem 3. Bloco de código da função insert

A função de insert recebe como parâmetro o nome da tabela e os dados que serão inseridos na mesma na forma de array. O foreach separa o nome da coluna da tabela na variável “Keys” e os seus respectivos valores em insertValues, logo após usando o comando implode, inserimos as virgulas entre os dados.

Vamos testar se o que fizemos até agora está funcionando? Para isso vamos criar um arquivo index.php contendo o seguinte código:

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php require_once 'conexao.php'; $conexao = new Conexao(DB_SERVER, DB_NAME, DB_USERNAME, DB_PASSWORD); $dados = array('cod_livro' => 01, 'nome_livro' => 'livro exemplo 01', 'desc_livro' => 'Livro de exemplo'); $insert = $conexao->insert('livro', $dados); if($insert == true){ echo 'inserido'; } ?> </body> </html>
Listagem 4. Arquivo index.php

Após criarmos o arquivo index.php, colocar na pasta do seu servidor e acessar através do browser, deverá aparecer a mensagem “inserido”. Acessando o banco de dados podemos conferir que as informações estão realmente lá!

Nosso próximo passo é alterar a informação que acabamos de inserir. Para tal, vamos criar a função update dentro do arquivo conexao.php

/** * Função para alterar os dados da tabela * @param string $tabela tabela onde será alterado os dados * @param string $colunaPrimary nome da coluna chave primaria * @param int $id id do dados a ser alterado * @param array $dados dados que serão inserido * @return boolean verdadeiro ou falso */ public function update($tabela, $colunaPrimay, $id, $dados) { foreach ($dados as $key => $value) { $sets[] = $key . '=\'' . $value . '\''; } $sets = implode(',', $sets); $sql = "UPDATE $tabela SET $sets WHERE $colunaPrimay = '$id'"; return $this->executar($sql); }
Listagem 5. Função update

A função de update é muito parecida com a de insert, a diferença é que na formação da query passamos o id do registro a ser alterado, assim como a coluna da chave primária.

Agora vamos testar? O procedimento vai ser idêntico ao que fizemos para o insert. Agora vamos criar um arquivo chamado update.php e inserir o seguinte código:

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php require_once 'conexao.php'; $conexao = new Conexao(DB_SERVER, DB_NAME, DB_USERNAME, DB_PASSWORD); $dados = array('cod_livro' => 01, 'nome_livro' => 'livro exemplo 03', 'desc_livro' => 'Livro de exemplo'); $insert = $conexao->update('livro', 'id_livro', 1, $dados); if($insert == true){ echo 'alterado'; } ?> </body> </html>
Listagem 6. Arquivo Update.php

Para executar, o mesmo procedimento, no browser acesse o nome do arquivo e se ocorrer tudo bem deverá aparecer a mensagem “alterado”. Você pode modificar os dados dentro do array e verificar no banco as alterações sendo realizadas.

Avançando com nosso CRUD, vamos visualizar quais registros temos na nossa base através da função “select”, vamos abstrair os dados do banco e visualizá-los em tela.

/** * Função de seleção dos registros da tabela * @param string $tabela Description * @param string $colunas string contendo as colunas separadas por virgula para seleção, se null busca por todas * */ public function select($tabela, $colunas = "*") { $sql = "SELECT $colunas FROM $tabela"; $result = $this->executar($sql); return mysql_fetch_assoc($result); }
Listagem 7. Função select dentro de Conexao.php

Função bem simples para a seleção dos dados. São passados apenas dois parâmetros: o nome da tabela e as colunas a serem selecionadas.

Para testar, vamos criar um arquivo chamado select.php e alimentá-lo com o seguinte código

/** * Função de seleção dos registros da tabela * @param string $tabela nome da tabela * @param string $colunas string contendo as colunas separadas por virgula para seleção, se null busca por todas * */ public function select($tabela, $colunas = "*") { $sql = "SELECT $colunas FROM $tabela"; $result = $this->executar($sql); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $return[] = $row; } return $return; }
Listagem 8. Conteúdo do arquivo select.php

Uma simples classe que varre os registros na nossa base de dados. O laço While vai em todas as linhas da tabela e salva seus registros em um array. Para visualizar os dados da sua tabela vamos criar um arquivo select.php e inserir o código abaixo:

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php require_once 'conexao.php'; $conexao = new Conexao(DB_SERVER, DB_NAME, DB_USERNAME, DB_PASSWORD); $select = $conexao->select('livro'); foreach ($select as $livro) { echo '================'.'</br>'; echo 'Id = '.$livro['id_livro'].'</br>'; echo 'Codigo = '.$livro['cod_livro'].'</br>'; echo 'Nome = '.$livro['nome_livro'].'</br>'; echo 'Descrição = '.$livro['desc_livro'].'</br>'; echo '================'.'</br>'; } ?> </body> </html>
Listagem 9. Arquivo Select.php

Para testar, acesse o arquivo através do browser e se ocorrer tudo bem você verá seus registros na tela.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados