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);
?>