Fala minha gente!
Hoje consegui um tempinho para voltar a postar no blog e resolvi voltar um com uma sequencia de tutorias básicos sobre MySQL + PHP para iniciantes.
Nessa primeira parte vamos criar um script que irá resgatar as notícias de um banco de dados e fazer mais alguns procedimentos.
• Saiba mais sobre o MySQLi aqui e aqui
• Os recursos utilizando aqui (MySQLi) só funcionam em PHP 5+ e MySQL 4.1+
Essas serão as tabelas que iremos utilizar nesse e nos próximos tutoriais:

Iremos usar essas tabelas para armazenar notícias que estarão ligadas à categorias.
- Cada notícia pertence a uma categoria
- Cada categoria contém zero ou mais notícias
A imagem acima foi criada utilizando o MySQL Workbench, uma ótima ferramenta de modelagem de banco de dados.
Para criar essas tabelas em seu banco de dados, execute esse código SQL:
-- -----------------------------------------------------
-- Table `categorias`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `categorias` ;
CREATE TABLE IF NOT EXISTS `categorias` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`nome` VARCHAR(50) NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = MyISAM;
-- -----------------------------------------------------
-- Table `noticias`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `noticias` ;
CREATE TABLE IF NOT EXISTS `noticias` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`categoria_id` INT UNSIGNED NOT NULL ,
`titulo` VARCHAR(100) NOT NULL ,
`descricao` TEXT NOT NULL ,
`texto` LONGTEXT NOT NULL ,
`ativa` TINYINT(1) NOT NULL DEFAULT 1 ,
`cadastro` DATETIME NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `CATEGORIA` (`categoria_id` ASC) ,
CONSTRAINT `FK_CATEGORIA`
FOREIGN KEY (`categoria_id` )
REFERENCES `categorias` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = MyISAM;
Vamos iniciar o nosso script criando um pequeno script de conexão ao banco de dados:
<?php
/**
* PHP e MySQL para iniciantes
*
* Arquivo que faz a conexão com o banco de dados utilizando MySQLi
*
* PHP 5+, MySQL 4.1+
*
* @author Thiago Belem <contato@thiagobelem.net>
* @link http://blog.thiagobelem.net/mysql/php-e-mysql-para-iniciantes-consulta-simples/
*/
// Dados de acesso ao servidor MySQL
$MySQL = array(
'servidor' => '127.0.0.1', // Endereço do servidor
'usuario' => 'root', // Usuário
'senha' => '', // Senha
'banco' => 'meu_site' // Nome do banco de dados
);
$MySQLi = new MySQLi($MySQL['servidor'], $MySQL['usuario'], $MySQL['senha'], $MySQL['banco']);
// Verifica se ocorreu um erro e exibe a mensagem de erro
if (mysqli_connect_errno())
trigger_error(mysqli_connect_error(), E_USER_ERROR);
?>
Na linha 21 nós criamos uma instância do MySQLi passando os dados de conexão com o servidor e, logo depois, verificamos se houve algum erro durante a conexão e exibimos a mensagem de erro.
Salve esse script com o nome de mysqli.php em uma pasta chamada includes.
O próximo passo será criar um script que faz uma consulta SQL, vamos começar o arquivo PHP com os comentários de créditos e o require para chamar o arquivo de conexão ao banco de dados:
<?php
/**
* PHP e MySQL para iniciantes
*
* Arquivo com um exemplo de consulta ao banco de dados MySQL
*
* PHP 5+, MySQL 4.1+
*
* @author Thiago Belem <contato@thiagobelem.net>
* @link http://blog.thiagobelem.net/mysql/php-e-mysql-para-iniciantes-consulta-simples/
*/
// Inclui o arquivo que faz a conexão ao banco de dados
require_once('includes/mysqli.php');
?>
Agora vamos montar uma consulta SQL simples para buscar as 10 últimas notícias ativas:
// Monta a consulta SQL para trazer as últimas 10 notícias ativas $sql = 'SELECT * FROM `noticias` AS Noticia WHERE Noticia.`ativa` = 1 ORDER BY Noticia.`cadastro` DESC LIMIT 10';
A consulta montada poderia ser traduzida por:
SELECIONE todas as colunas
DA TABELA `noticias`
ONDE `ativa` for igual a 1
ORDENANDO PELO `cadastro` DECRESCENTEMENTE
LIMITADO A 10 resultados
Agora precisamos executar a consulta utilizando o método query do MySQLi:
// Executa a consulta OU mostra uma mensagem de erro $resultado = $MySQLi->query($sql) OR trigger_error($MySQLi->error, E_USER_ERROR);
E agora só precisamos rodar um loop, e em cada iteração (passada no loop) iremos exibir a notícia encontrada, montando um bloco HTML:
// Faz um loop, passando por todos os resultados encontrados
while ($noticia = $resultado->fetch_object()) {
// Exibe a notícia dentro de um bloco HTML
?>
<h2><?php echo $noticia->titulo; ?></h2>
<p><?php echo $noticia->descricao; ?></p>
<p><a href="noticia.php?id=<?php echo $noticia->id; ?>" title="Continue lendo essa notícia">Leia mais »</a></p>
<?php
} // while ($noticia = $resultado->fetch_object())
Fazendo isso, para cada notícia encontrada pela consulta, será criado o seguinte bloco HTML:
<h2>Titulo da notícia</h2> <p>Descrição da notícia</p> <p><a href="noticia.php?id=2" title="Continue lendo essa notícia">Leia mais »</a></p>
Depois disso, podemos colocar mais um pequeno bloco de código que irá mostrar o total de registros encontrados com a consulta:
// Exibe o total de registros encontrados
echo "<p>Registros encontrados: {$resultado->num_rows}</p>";
E no final de tudo precisamos – SEMPRE – liberar o resultado da consulta, limpando espaço na memória e deixando tudo mais organizado:
// Libera o resultado para liberar memória $resultado->free();
O arquivo consulta.php ficou assim:
<?php
/**
* PHP e MySQL para iniciantes
*
* Arquivo com um exemplo de consulta ao banco de dados MySQL
*
* PHP 5+, MySQL 4.1+
*
* @author Thiago Belem <contato@thiagobelem.net>
* @link http://blog.thiagobelem.net/mysql/php-e-mysql-para-iniciantes-consulta-simples/
*/
// Inclui o arquivo que faz a conexão ao banco de dados
require_once('includes/mysqli.php');
// Monta a consulta SQL para trazer as últimas 10 notícias ativas
$sql = 'SELECT *
FROM `noticias` AS Noticia
WHERE Noticia.`ativa` = 1
ORDER BY Noticia.`cadastro` DESC
LIMIT 10';
// Executa a consulta OU mostra uma mensagem de erro
$resultado = $MySQLi->query($sql) OR trigger_error($MySQLi->error, E_USER_ERROR);
// Faz um loop, passando por todos os resultados encontrados
while ($noticia = $resultado->fetch_object()) {
// Exibe a notícia dentro de um bloco HTML
?>
<h2><?php echo $noticia->titulo; ?></h2>
<p><?php echo $noticia->descricao; ?></p>
<p><a href="noticia.php?id=<?php echo $noticia->id; ?>" title="Continue lendo essa notícia">Leia mais »</a></p>
<?php
} // while ($noticia = $resultado->fetch_object())
// Exibe o total de registros encontrados
echo "<p>Registros encontrados: {$resultado->num_rows}</p>";
// Libera o resultado para liberar memória
$resultado->free();
?>
Por hoje é só! ![]()
Faça o download de todos os arquivos desse tutorial: PHP-e-MySQL-Consulta-Simples.zip
Nas próximas partes desse tutorial iremos ver uma consulta mais complexa (ligando as duas tabelas) e outros scripts para cadastrar e editar notícias.
Um grade abraço e até a próxima!
Você também vai gostar de ler:
- PHP e MySQL para iniciantes – Consulta Avançada
- Guia prático de MySQLi no PHP
- Usando o MySQLi Orientado a Objetos
- Sistema de busca em PHP e MySQL com paginação
- Ambiente de Desenvolvimento para iniciantes
Postado em MySQL, PHP, Tutoriais
Com as tags Banco de Dados, Iniciante, MySQL, PHP, Servidor, SQL, Tutoriais, Tutorial
Escrito por Thiago Belem
Gostou desse artigo?
Não se esqueça de assinar o RSS e divulgue-o para o mundo:

De nada, continuação de excelente trabalho.
Tentarei fazer algo sobre
Opa..blz? Conheci teu blog e achei interessante…
me chamou a atenção vc citar o MySQL Workbench…tem como criar um tópico ensinando a usá-lo??
Adoreeii !! (=
Helder,
O seu comentário fez todo sentido e me fez mudar de idéia… Irei editar o
tutorial e fazê-lo usando MySQLi.
Obrigado e um grande abraço!
O artigo foi editado… Agora usaremos MySQLi
Obrigado pela dica!
Até que enfim um artigo novo! Parabéns Thiago! Bem vindo de volta ao seu blog! Hehehe…
Abraços do colega colunista do iMasters.
Tenho gostado muito dos tutoriais anteriores, mas este deixa alguma desilusão, há um retrocesso e até uma certa repetição. Não deveria usar-se apenas MYSQLI ou melhor ainda PDO ?? Apesar de ser para iniciantes é melhore começarem já pelas melhores práticas.
Obrigado, tinha uma leve impressão de que era esse programa, instalei ontem mesmo e testei, bem legal.. eu só usava o MySQL Gui Tools
Danilo O programa é o MySQL Workbench
pode baixar no site da mysql mesmo http://wb.mysql.com/
MySQL Workbench
Essa sequencia de tutoriais foi criada para iniciantes… Haviam muitas dúvidas sobre “Como faço uma página de cadastro?” e resolvi fazer do começo..
Kra, só acho que o tutorial deveria ser feito usando PDO, mas tá massa
Aeeeee, Thiago não morreu rsrs
Brincadeiras a parte ótimo post, bem explicado e simples.
Parabéns
Só por curiosidade, qual o programa que você usou para gerar aquela imagem de relacionamentos?