Comandos MySQL
Vamos começar aprender MySQL, mexer com Bases de Dados (BD).
Neste artigo irei ensinar a conectar a uma BD, e seleccionar uma base de dados.
Num script PHP, para fazer a conexão com a base de dados MySQL utilizamos a função mysql_connect()
.
Sua sintaxe é a seguinte:
mysql_connect([servidor[:porta]],[utilizador],[senha]);
Para fazer, por exemplo, a conexão com a base de dados bdteste
, que possui como nome de utilizador teste
, e como senha teste2
, executamos a seguinte atribuição:
$conexao = mysql_connect("localhost","teste","teste2");
Se a base de dados estiver localizado num servidor diferente, basta substituir localhost
pelo nome ou endereço de IP.
Logo após, 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 estes comandos em diversas páginas do site, seria interessante a criação de um include
que faz conexão com o banco 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, username, senha 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 Registos da sua tabela da Base 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 retornados todos os campos existentes na(s) tabela(s) em uso. Se a cláusula where
for omitida, serão mostrados todos os registos 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 é:
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 no PHPMyAdmin.
Depois crie uma página qualquer com este código:
<?
//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>";
}
//fexando conexão com o mysql.
mysql_close($conexao);
?>
Neste exemplo eu coloquei o include
da conexão com o MySQL, e na outra linha tem o Select
que eu expliquei, e tem também o mysql_fetch_array()
, que coloca o resultado do select
num array, e com o while
exibe todo o conteúdo do 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 o 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 registos que uma consulta pode retornar. Se, por exemplo, um utilizador quiser ver os utilizadores do seu site, e houver mais de 500 utilizadores. Obviamente não mostraria todos os utilizadores e também demoraria um bom tempo para a página ser carregada.
Poderíamos, então determinar que devem ser retornados no máximo 10 utilizadores, (talvez os dez últimos utilizadores) utilizando o seguinte comando:
$sql = mysql_query("SELECT * FROM pessoas LIMIT 10"); // codigo sql
Inserindo informações numa Base de Dados
Cada linha de uma tabela da base de dados é chamada de registo. Para incluir um ou mais registos 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 incluir 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 campox) values (valor1,valor2,...,valorx);
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 registo 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 até os demais campos da nossa tabela que criamos no 2° artigo Comandos MySQL.
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,...,valorx
serão inseridos nos campos campo1,campo2,...,campox
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:
<?
//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($sgl); //executa a query
//exibe uma simpels mensagem de sucesso!
echo"Dados incluidos com Sucesso!";
//fexa conexão com o MYSQL
mysql_close($conexao);
?>
Salve este código, coloque no seu servidor, e execute o ficheiro no navegador.
A mensagem que mostrará é: Dados incluidos com Sucesso!
. Também tem a maneira de interagir o INSERT
com um formulário feito em HTML. Depois que o utilizador preenche todos os campos o formulário envia para o ficheiro insert.php
e neste ficheiro utiliza as variáveis POST
ou GET
digitadas no formulário. Não é muito complexo.
Alterar informação numa base de dados
O comando Update
e Delete
, dois comandos muito usados em qualquer sistema em PHP.
Comando: Update
Altera valores de uma ou mais linhas da tabela especificada.
Sintaxe:
UPDATE nome_tabela //- identifica o nome da tabela
SET atribuição1,atribuição n //- define os campos a serem alterados
WHERE condição //- especifica os registos a serem alterados.
Atenção: se a cláusula Where
for omitida, a actualização será feita para todos os registos. Agora vamos dar um exemplo fácil:
<?
//abre conexão com o mysql
include"conexao.php";
$up = mysql_query("UPDATE pessoas SET email = 'Kllo@hotmail.com' WHERE nome = 'lix'");
//fexando conexão com o mysql.
mysql_close($conexao);
?>
Este código irá trocar o email do registo com o nome lix
, e colocar o email Kllo@hotmail.com
. Claro que outros campos podem ser editados, é só colocar mais SET campo1 = 'valor1'
.
Comando: Delete
Exclui um ou mais registos da tabela da base de dados, a sua exclusão é definitiva não poderá mais recuperar o registo eliminado!
Sintaxe:
DELETE FROM nome_tabela //- Define o nome da tabela dos registos a serem excluidos
WHERE condição //- Especifica os registos a serem excluidos.
Atenção: se a cláusula Where
for omitida sera eliminado todos os registos da tabela.
Eu fiz um exemplo um pouco mais complexo:
<?
//abre conexão com o mysql
include"conexao.php";
$sql = mysql_query("SELECT * FROM pessoas order by nome"); // código sql que selecciona a tabelas com os dados
while($dados = mysql_fetch_array($sql))
{
//cria uma variável nome
$nome = $dados['nome'];
echo"<a href='elimina.php?nome=$nome'>$nome</a>";
echo"<br>";
}
//fexando conexão com o mysql.
mysql_close($conexao);
?>
<?
//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 eliminado!";
//fexando conexão com o mysql.
mysql_close($conexao);
?>