• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

filip_e

Comandos MySQL (em PHP)

9 mensagens neste tópico

[Nota: este tutorial encontra-se obsoleto, e apresenta falhas de SQL injection. Os conteúdos relativos ao PHP devem ser ignorados.]

Vamos começar aprender MySQL, mexer com Base de Dados (BD). Uma séries de artigos ensinando os comandos básicos de MySQL. Neste Artigo irei ensinar à conectar a um BD, e selecionar uma base de dados.

Num programa PHP, para fazer a conexão com o banco de dados MySQL utilizamos a função mysql_connect(). Sua sintaxe é a seguinte:

mysql_connect([servidor[:porta]],[usuário],[senha]);

Para fazer, por exemplo, a conexão com a base de dados bdteste que possui como nome de utilizador teste, e como password teste2, executamos a seguinte atribuição:

$conexao = mysql_connect("localhost","teste","teste2");

Se a base de dados estiver localizada num servidor diferente, basta substituir localhost pelo nome ou endereço de IP.

Logo de seguida especificamos através do comando mysql_select_db() qual será a base de dados utilizada.

mysql_select_db("bdteste");

Feito isso, estará aberta a conexão, e podemos manipular dados, através de inclusões, exclusões e alterações. Quando não for mais utilizar uma conexão aberta dentro de um programa, podemos fechá-la com o comando mysql_close(). Exenplo:

mysql_close($conexao);

Para não ter de repetir todos esses comandos em diversas páginas do site, seria interessante a criação de um include que faz conexão com a base de dados. Vamos criar este include:

$conexao = mysql_connect("localhost","teste","teste2");
mysql_select_db("bdteste");

Agora basta colocar uma chamada para este include em todas as páginas que precisam ter acesso à base de dados.

include "conexao.php";

Quando for necessário fazer alguma alteração no servidor, nome de utilizador, password ou no nome da base de dados, precisaremos alterar um único arquivo em vez de ter de alterar cada uma das páginas.

Observação: lembre-se que no final de cada página devemos fechar a conexão que foi aberta dentro do include, por meio do comando mysql_close($conexao).

Exibir Registros de Sua tabela do banco de Dados

Não tem segredo...

SELECT <lista_de_campos> FROM <lista_de_tabelas WHERE <condições>

A sintaxe é bem fácil de decorar. Se <lista_de_campos> for substituída por um asterisco (*), serão devolvidos todos os campos existentes na(s) tabela(s) em uso. Se a cláusula WHERE for omitida, serão mostrados todos os registros das tabelas determinadas em <lista_de_tabelas>.

Para completar este artigo, vamos ver uma forma básica de montar uma página HTML usando dados do MySQL.

A tabela que utilizaremos é definida por:

CREATE TABLE `pessoas` (
 `nome` VARCHAR( 30 ) NOT NULL ,
 `email` VARCHAR( 50 ) NOT NULL ,
 `site` VARCHAR( 50 ) NOT NULL ,
 `sexo` VARCHAR( 1 ) NOT NULL
);

Crie esta tabela na base de dados. Depois crie uma página qualquer com este código:

<?php
//abre conexão com o mysql
include "conexao.php";
$sql = mysql_query("SELECT * FROM pessoas"); // codigo sql que selecciona a tabela com os dados
while($dados = mysql_fetch_array($sql))
{
 //exibe na tela os campos da tabela.
 echo $dados['nome'];
 echo"<br>";
 echo $dados['email'];
 echo"<br><br>";
}
//fechando a conexao com o mysql.
mysql_close($conexao);
?>

Neste exemplo eu coloquei o include da conexão com o MySQL, na outra linha tem o SELECT que eu expliquei, tem também o mysql_fetch_array() que coloca o resultado do SELECT num array, e com o while exibe na todo o conteúdo da array.

while($dados = mysql_fetch_array($sql)) { }

Se resolver exibir todas as pessoas de sexo Feminino por exemplo na terceira linha do código coloque isto:

$sql = mysql_query("SELECT * FROM pessoas WHERE sexo = 'f'"); // codigo sql

(F, na nossa tabela, representa sexo feminino.)

Ordenando os resultados de uma consulta

Para ordenar usamos o ORDER BY, se quiser ordenar por ordem alfabética o código ficaria assim:

$sql = mysql_query("SELECT * FROM pessoas ORDER BY nome"); // codigo sql

Também podemos fazer uma ordenação decrescente dos resultados, e para isso basta utilizar a opção DESC após o nome do campo, conforme é mostrado a seguir:

$sql = mysql_query("SELECT * FROM pessoas ORDER BY nome DESC"); // codigo sql

Determinando o número de linhas retornadas

Utilizando a opção LIMIT, podemos determinar o número máximo de registros que uma consulta pode devolver. Se, por exemplo, um utilizador quiser ver os utilizadores do seu site, e houver mais de 500 utilizadores, obviamente não mostraria na tela todos os usuários, pois demoraria um bom tempo para a página ser carregada.

Poderíamos então determinar que devem ser devolvidos no máximo 10 utilizadores (talvez os dez últimos) utilizando o seguinte comando:

$sql = mysql_query("SELECT * FROM pessoas LIMIT 10"); // codigo sql

Inserindo informações em um Banco de Dados

Cada linha de uma tabela de banco de dados é chamada de registro. Para incluir um ou mais registros numa tabela, utilizamos o comando SQL INSERT. Veremos agora como funciona esse comando, para que posteriormente possa utilizá-lo nos seus programas PHP.

Comandos INSERT

O comando responsável por introduzir dados numa tabela. Existem duas variações para o comando INSERT:

INSERT into <nome_tabela> values (valor1, valor2, ..., valorn);

Insert into <nome tabela> (nome_campo1, nome_campo2, ..., nome_campon) values (valor1, valor2, ..., valorn);

Na primeira variação, os valores digitados no lugar de valor1, valor2, ..., valorn serão incluídos na mesma ordem em que foram definidos os campos no momento da criação da tabela definida por <nome_tabela>. Portanto, se fossemos incluir um registro na tabela PESSOAS, o valor1 seria armazenado no campo nome, o valor2 seria armazenado no campo email, o valor3 seria armazenado no campo site, e assim por diante.

Os campos criados com a cláusula NOT NULL devem ser obrigatoriamente preenchidos, caso contrário ocorrerá um erro na execução do comando INSERT. É importante lembrar que os valores numéricos não devem ser delimitados por aspas. Já os dados do tipo char, varchar, date e outros devem ser delimitados por aspas simples.

Na segunda variação do comando INSERT, os valores valor1, valor2, ..., valorn serão inseridos nos campos campo1, campo2, ..., campon na tabela definida por <nome_tabela>. Os campos da tabela não listados receberão o valor NULL ou valor padrão (caso exista um).

Se os campos não listados foram criados com a cláusula NOT NULL ocorrerá um erro na execução do comando INSERT.

Vamos dar um exemplo prático:

<?php
//abre conexão com o mysql
include "conexao.php";
//comando INSERT
$sql = "INSERT into pessoas (nome, site, email, sexo) values ('kelvin', 'devmasters.net', 'devmasters@devmasters.net', 'M')";
mysql_query($sql); //executa a query
//fecha a conexao com o mysql
mysql_close($conexao);
?>

Guarde este código como insert.php, coloque no seu servidor e execute o arquivo no navegador.

Também pode interagir o INSERT com um formulário feito em HTML. Depois que o utilizador preenche todos os campos o formulário, envia para o arquivo insert.php e neste arquivo pega as variáveis POST ou GET digitadas no formulário. Não é muito complexo.

Update

Altera valores de uma ou mais linhas da tabela especificada. Sintaxe:

UPDATE <nome_tabela> SET atribuicao1, ..., atribuicaon WHERE condicao

Atenção: se a cláusula WHERE for omitida a atualização será feita para todos os registros.

Agora vamos dar um exemplo fácil:

<?php
//abre conexão com o mysql
include"conexao.php";
$sql = mysql_query("UPDATE pessoas SET email = 'Kllo@hotmail.com' WHERE nome = 'lix'");
mysql_query($sql); //executa a query
//fechando a conexao com o MySQL.
mysql_close($conexao);
?>

Este código irá trocar o email do registro com o nome lix, e colocar o email Kllo@hotmail.com. Claro que outros campos podem ser editados, bastando para isso colocar mais atribuições no SET.

Delete

Exclui um ou mais registros da tabela da base de dados. Sua exclusão é definitiva não poderá mais recuperar o registro eliminado! Sintaxe:

DELETE FROM <nome_tabela> WHERE condicao

Atenção: se a cláusula WHERE for omitida serão eliminados todos os registros da tabela.

lista.php

<?php
//abre conexão com o mysql
include "conexao.php";
$sql = mysql_query("SELECT * FROM pessoas ORDER BY nome"); // codigo sql que seleciona a tabelas com os dados
while($dados = mysql_fetch_array($sql))
{
 //cria uma variavel nome
 $nome = $dados['nome'];
 echo"<a href='deleta.php?nome=$nome'>$nome</a>";
 echo"<br>";
}
//fechando a conexao com o mysql.
mysql_close($conexao);
?>

deleta.php

<?
//abre conexão com o mysql
include"conexao.php";
//define a variavel nome
$nome = $_GET[nome];
//comando que exclui o registro
$query = mysql_query("DELETE FROM pessoas WHERE nome = '$nome'");
echo"Registro excluido!";
//fechando a conexao com o mysql.
mysql_close($conexao);
?>

[Artigo no Wiki]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Continua com o tutorial que vais muito bem....estive a ler e achei interessante esta iniciativa...

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

aqui o nosso filip_e trabalha sempre a fundo aqui pó forum...

Tás lá... e obrigado pelos excelentes tutoriais que post..  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto vai dar jeito para fazer o KISC em PHP, alinhas filip_e ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

quando essa me*** fizer café DELTA pagas um café a cada um de nós  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá

Não sou grande entendido na matéria mas estou a tentar. A minha questão tem a ver com os exemplos dados no início e que tentei adaptar á minha situação. Tenho um formulário onde introduzo os dados com várias opções de escolha. O que pretendo é mostrar esses dados. Julgo que deve ser simples, mas para mim é grande confusão. Pegando no exemplo adaptei da seguinte forma:

<?php

include"conexao.php";

$sgl = mysql_query("SELECT * FROM jos_chronoforms_1"); // codigo sgl que seleciona a tabela com os dados
while($dados = mysql_fetch_array($sgl))
{
 //exibe na tela os campos da tabela.
 echo $Nome['Nome'];
 echo"<br>";
 echo $ID['ID do Jogador'];
 echo"<br><br>";
}

mysql_close($conexao);
?>

O resultado é uma página em branco. Como faço para apresentar uma listagem dos dados inseridos no formulário.

Desde já obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora