Dicas

Integração com banco de dados - php

O que é 'Banco de Dados'?

Banco de dados é um repositório com várias tabelas de dados, integradas ou não entre si, capazes de armazenar as informações necessárias à execução das tarefas esperadas pelo seu site. Assim , ao desenvolver, por exemplo uma loja virtual , este banco de dados deverá ter: descrição do produto, preço, imagem do produto Etc...

Quando o usuário abre o site, a página fará uma leitura de banco de dados, trazendo para a tela as informações sobre os produtos da loja. Quando o usuário clica link de uma desses produtos, a página que cai abrir deverá ler os dados detalhados de cada produto, assim como imagens dele (as imagens não são dados no banco de dados, são arquivos enviados via upload, para uma pasta no servidor, cuja endereço fica gravado em um campo de registro daquele casa).


Vamos começar esse capitulo assumindo que:

  • O servidor já esta configurado corretamente
  • Você já domina o básico sobre banco de dados
  • Você já sabe o básico sobre SQL

Para operar com um banco de dados em PHP, usa-se a seguinte lógica:

  • Estabelecimento de uma conexão com o banco de dados
  • Envio de uma query SQL para o banco de dados
  • Manipulação dos resultados desta operação

Vamos a um pequeno código em PHP

Para começar, já foi criado a base de dados 'teste' e uma tabela 'pessoas', onde foram criados três campos: 'CPF', 'Nome', 'Idade'. Agora vamos ao código:

<?php

$db = mysql_query ("localhost", "root", "123");
mysql_select_db("teste", $db);
$resultado = mysql_query("INSERT INTO pessoas VALUES (12345678901, João Pires, 23);", $db);

?>


Explicando:

$db = mysql_query ("localhost", "root", "123");


Essa primeira linha de comando utiliza uma das classes pré-existentes no interpretador PHP (existem várias delas que são utilizadas como fosse "comandos" nativos de linguagem). Os parâmentros ali são os seguintes:

  • localhost: É o endereço do banco de dados. Poderia ser , por exemplo, um endereço IP ou uma URL.
  • Root: É o nome de usuário. Obviamente, caso esteja desenvolvendo uma aplicação corporativa, um site de verdade, jogando dentro de um servidor da empresa ou em uma hospedagem profissional , o nome de usuário será aquele usado para conectar com o banco de dados através do PHPMyAdmin ou de programas como o MySQLTools.
  • 123: É senha de acesso ao banco de dados.

Existem classes prontas para uso, caso se queira conectar a aplicação PHP a outros Sistemas Gerenciadores de banco de dados (SGBD), como Oracle, TinySQL, DBase, SQLServer, Etc. Muitos deles não têm estas classes existentes no interpretador do PHP (mesmo nas versões atualizadas), mas é possível faze download de snippets de código com essas classes faltantes (e muitas vezes, o próprio fabricante do SGBD tem interesses em criar-las). No entanto, a grande maioria das empresas que oferecem hospedagem para sites já configuram o MySQL como primeira opção em termos de SGBD para seus clientes, fazendo desde o mais utilizado no mundo todo. Voltando ao código, foi carregado a variável $db com uma URL e seus parâmetros de conexão. Teoricamente, ela está carregada com isso tudo. Mas, se por acaso a operação falhar, essa variável passará a abrir o valor booleano FALSE.


mysql_select_db("teste", $db);


Essa segunda linha de commando seleciona a base de dados que será utilizada porque o endereço especificado na URL do banco de dados direciona a um servidor que pode ter uma, duas ou milhares de base de dados.


$resultado = mysql_query("INSERT INTO pessoas VALUES (12345678901, João Pires, 23);", $db);


Na terceira linha de comando a variável $resultado será carregada com o resultado de uma operação que consiste em enviar uma determinada query SQL para ser executada pelo banco de dados, No caso, trata-se de um insert, que não retorna dados com resultados. Ele simplesmente retorna se a operação foi ou não bem sucedida. Se foi bem sucedida a variável $resultado fica valendo 1 e caso a operação dê errado, ou já existe um registro igual, ou qualquer coisa que não seja o sucesso desta inserção de dados, a variável $resultado recebe o valor FALSE booleano. Dá até para inserir um tratamento de erros:


if (!$resultado) {
echo 'Erro no inserção de dados!';
}


Lendo e tratando as informações já existentes no Banco de Dados

Ler os dados em uma tabela do banco de dados é muito semelhante a escrever. Mas o comando mysql_query retorna, não o sucesso o fracasso da operação, e sim uma série de dados, retirados da pesquisa feita pela query SQL. Veja o código abaixo, e note que ele não mostrará os dados da tabela 'pessoas' que acabamos de gravar:


<?php

$db = mysql_connect ("localhost", "root", "123");
mysql_select_db ("teste", $db);
$resultado = mysql_query ("SELECT * FROM pessoas", $db);
while ($registro = mysql_fetch_row ($resultado)) {
echo $registro;
}

?>


O resultado será:

ArrayArrayArray


Isso ocorre porque cada registro do banco de dados é um array, umvetor de resultados com múltiplos dados indexados, de zero em diante. Por isso não vamos as informações gravadas. O correto aqui será:

<?php

$db = mysql_connect ("localhost", "root");
mysql_select_db ("teste", $db);
$resultado = mysql_query ("select * from pessoas", $db);
while ($registro = mysql_fetch_row ($resultado)) {
echo $registro[1].' _ ' .$registro[2].' Anos, CPF '.$registro[0].'<br />';
}

?>


Com esse código a variável $resultado recebe uma matriz composta por, basicamente, varias linhas e 3 colunas. Por exemplo:


Indice 0 Indice 1 Indice 2
 12345678901  Zé Matias  27
 25489762139  Paulo nevez  33
 35687442138  João Pires  25
 25040896304  Anna Isabele  29

Note que criei um laço de repetição, que recorrerá toda a tabela de dados retornados do banco de dados, do primeiro ao último registro.
   A cada ciclo, a variável $registro é carregada com o valor de linha atual do $resultado. E depois, com $registro é uma arrey, obviamente tem uma série de dados indexados. No caso, o dado de índice zero (CPF), um (nome) e dois (idade).

(Créditos para Fábio Burch Salvador)