PHP/MySQL
Após o projeto de banco de dados estar pronto, vamos começar
a escrever scripts PHP para interagir com ele. Neste curso será
apresentado as principais funções. Estas irão proporcionar
a troca de informações entre o PHP e o MySQL.
Conectando ao MySQL
O comando básico para realizar uma conexão com o MySQL
é:
mysql_connect($hostname, $user, $password);
Após a conexão, deve ser escolhido um banco de dados
para se trabalhar. A função de seleção de banco
de dados é:
mysql_select_db($bd);
Toda vez que for feita uma conexão, deverá ser selecionado
um
banco de dados.
Realizando Consultas
A consulta a um banco de dados via PHP é basicamente um comando
MySQL. Este, é empacotado em uma chamada de função
do PHP chamada mysql_query( ). É através da mysql_query(
) que será utilizada a sintaxe SQL, como por exemplo, um SELECT,
INSERT, UPDATE e DELETE. Ainda pode-se criar(CREATE) e eliminar(DROP) tabelas.
Uma consulta no MySQL, utilizando o PHP, poderia ser assim:
$resultado = mysql_query("select
email from usuario where nome='João'");
A função mysql_query retorna um valor interiro TRUE se a
query foi bem sucedida. Retorna FALSE se a consulta foi considerada ilegal
ou não foi corretamente montada, no caso, a sintaxe SQL.
Como visto acima, ela recebe como argumento a string de consulta, a
qual não deve conter um ponto-e-vírgula dentro das aspas
duplas.
Se a consulta foi um INSERT, UPDATE, DELETE, CREATE TABLE ou DROP TABLE
e a função retornou TRUE, pode-se utilizar uma outra função
do PHP, chamada:
$linhas_afetadas = mysql_affected_rows(
);
a qual informa/retorna quantas linhas foram alteradas pela consulta. Se
a consulta foi um SELECT, será retornado um número inteiro,
chamado de identificador de resultado. Este identificador é único
para cada select. Logo, não poderá ser utilizado a função
mysql_affected_rows com um SELECT, porque neste caso, nenhuma linha foi
alterada.
Utilizamos então a função mysql_num_rows($resultado)
para verificar quantas linhas foram retornadas por um SELECT bem-sucedido.
Buscando os registros
Um dos pontos que confunde muitos desenvolvedores iniciantes é
a busca de registros, visto que existe uma função do PHP,
chamada mysql_query, que realiza a consulta. A mysql_query, como citado
anteriormente, retorna um inteiro que representa sucesso, falha ou a identidade
da consulta. Após a execução desta função,
os dados estão prontos para serem recuperados, mas somente pelas
funções específicas de busca do PHP. Estas funções
são chamadas de mysql_fetch, as quais retornam dados que foram disponibilizados
pelo mysql_query.
As funções de busca são:
-
mysql_fetch_row - retorna a linha como um array enumerado;
-
mysql_fetch_object - retorna a linha como um objeto;
-
mysql_fetch_array - retorna a linha como um array associativo;
-
mysql_result - retorna uma célula de dados;
Para elucidar melhor o conceito de conectividade e busca de informações
em banco de dados, veja os exemplos abaixo, os quais buscam os registros
da tabela usuario, criada no módulo MySQL.
mysql_fetch_array
<?php
$hostname = 'localhost';
$usuario = 'dpaula';
$senha = 'zyb5730fft';
$db = 'dpaula_db';
$id = mysql_connect($hostname,$usuario,$senha);
mysql_select_db($db);
$consulta = "select nome,sobrenome,endereco,cidade,estado,cep,idade
from usuario";
$resultado = mysql_query($consulta);
while ($reg = mysql_fetch_array($resultado))
echo "$reg[nome] $reg[sobrenome]
$reg[endereco] $reg[cidade] $reg[estado]
$reg[cep] $reg[idade] <p>";
echo "Número de linhas retornadas: ".mysql_num_rows($resultado);
//pode-se referenciar as colunas por índices
numéricos, conforme o código abaixo
$resultado = mysql_query($consulta);
while ($reg = mysql_fetch_array($resultado))
echo "$reg[0] $reg[1]
$reg[2] $reg[3] $reg[4] $reg[5] $reg[6] <p>";
mysql_close($id);
?>
mysql_fetch_row
<?php
$hostname = 'localhost';
$usuario = 'dpaula';
$senha = 'zyb5730fft';
$db = 'dpaula_db';
$id = mysql_connect($hostname,$usuario,$senha);
mysql_select_db($db);
$consulta = "select nome,sobrenome,endereco,cidade,estado,cep,idade
from usuario";
$resultado = mysql_query($consulta);
/* usa-se o list( ) em conjunto como mysql_fetch_row
- o comando list é utilizado para atribuir vários elementos
do array à variáveis em sucessão*/
while (list($nome,$sobrenome,$endereco,$cidade,$estado,$cep,$idade)
= mysql_fetch_row($resultado))
echo "$nome $sobrenome
$endereco $cidade $estado $cep $idade <p>";
mysql_close($id);
?>
mysql_fetch_object
<?php
$hostname = 'localhost';
$usuario = 'dpaula';
$senha = 'zyb5730fft';
$db = 'dpaula_db';
$id = mysql_connect($hostname,$usuario,$senha);
mysql_select_db($db);
$consulta = "select nome,sobrenome,endereco,cidade,estado,cep,idade
from usuario";
$resultado = mysql_query($consulta);
while ($reg = mysql_fetch_object($resultado))
echo "$reg->nome $reg->sobrenome
$reg->endereco $reg->cidade] $reg->estado $reg->cep
$reg->idade <p>";
mysql_close($id);
?>
Aconselha-se a não deixar as variáveis de conexão
e acesso ($hostname,
$usuario, $senha, $db) junto ao script. Costuma-se
criar um outro arquivo que contenha estas variáveis e este deve
ser incluido via o comando include, por exemplo.
Inserindo novos registros
Da mesma maneira com que buscamos os dados, podemos inserir novos registros.
A variação está na consulta. Confira o exemplo:
<?php
$hostname = 'localhost';
$usuario = 'dpaula';
$senha = 'zyb5730fft';
$db = 'dpaula_db';
$id = mysql_connect($hostname,$usuario,$senha);
mysql_select_db($db);
$nome = 'Isabel';
$sobrenome = 'Mota';
$endereco = 'Av. Domingos de Almeida, 71';
$consulta =
"insert into usuario values (NULL,
$nome', '$sobrenome', '$endereco', 'Florianópolis','SC','88020-100','carsiq@infonoticias.com.br','38','M')";
$resultado = mysql_query($consulta);
echo mysql_affected_rows($id);
mysql_close($id);
?>
|