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 utilizado.
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 a 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);
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 causa 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, no 1° artigo explica isso, 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).
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
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 usuários) utilizando o seguinte comando:
$sql = mysql_query("SELECT * FROM pessoas limit 10"); // codigo sql
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 em seus programas PHP.
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 como insert.php e coloque no seu servidor 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.
O comando ”Update” e ”Delete”, dois comandos muito usados em qualquer sistema em PHP.
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); ?>
Guarde o ficheiro como update.php
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, so colocar mais set campo1 = 'valor1'.
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); ?>
Guarde o ficheiro com o nome de lista.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 eliminado!"; //fexando conexão com o mysql. mysql_close($conexao); ?>
Guarde este último ficheiro com o nome elimina.php.
Este artigo foi originalmente escrito por filip_e a 8 de Junho de 2005