Objota O mundo orientado a objetos

Acesso a banco de dados com php

Posted on julho 28, 2010

Olá, neste artigo vamos abordar conexão com banco de dados usando php. Sei que até agora vimos muitas coisas relacionadas a orientação a objetos, porém para fim de simplificar o entendimento vou abordar de forma procedural. Programar de forma procedural. Ou seja, não orientado a objetos. Calma! Veremos exemplos orientados a objetos também, aqui é só pra centralizar a idéia no processo de conectar. O que no final das contas é uma coisa muito simples.

Se você vem acompanhando meus artigos já deve ter visto algo sobre o xampp, mas se você estava sapeando pelo Google e parou por aqui, eis um link de um artigo que fala um pouco sobre o xampp:  Hello world em php. Ele é um aplicativo que instala um kit básico pra desenvolvimento em php. Entre os softwares instalados está o banco de dados MySql. Que é o que nos interessa neste artigo, porque vamos nos conectar com ele.

Crendo eu, que você já tem o xampp vamos prosseguir. Acesse o http://localhost e depois o phpMyAdmin. Este aplicativo é feito em php e usaremos ele para administrar nosso banco de dados.

Para manipular um banco de dados utiliza-se uma linguagem própria. Esta linguagem é o SQL. É muito fácil encontrar conteúdo sobre SQL, eis que pelo menos o banco de dados MySQL tem documentação online. Outros bancos de dados também usam SQL, porém existe uma variação da sintaxe. Para nosso exemplo utilize o código abaixo para criar o banco de dados e a tabela que iremos utilizar.


/* Cria o banco de dados */

CREATE DATABASE objota;

/*
	O código abaixo cria a tabela clientes.

	veja que os comandos são bem explícitos. (cria a tabela se ela não existe)
*/

CREATE TABLE IF NOT EXISTS objota.clientes (
  id int(11) NOT NULL AUTO_INCREMENT,
  nome varchar(50) NOT NULL,
  telefone varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

/* Insere alguns registros na tabela */

INSERT INTO objota.clientes (id, nome, telefone) VALUES
(1, 'Carlos', '3333-4444'),
(2, 'Mario', '5555-6666'),
(3, 'Marcela', '7894-6543'),
(4, 'Gustavo', '1535-5847');

Com o phpMyAdmin aberto em seu navegador copie este código SQL, selecione a aba SQL no menu da página inicial cole este código no campo de input e após isso clique em executar. Este código criará um banco de dados com o nome objota e uma tabela com o nome clientes com os seguintes atributos: id, nome, telefone.

Como se trata de um exemplo a tabela já virá ”populada”, ou seja, com algum conteúdo. Feito isso nosso banco de dados já existe. Iremos então usar um comando para recuperar estes dados. Mas antes, a tal conexão.

Conectando ao banco de dados

Para se conectar a um banco de dados é necessário possuir:

  • Nome do banco de dados
  • Nome do usuário de banco de dados
  • Endereço do banco de dados
  • Senha
  • Porta

Como se trata de uma conexão local o Endereço do banco no caso é sua própria máquina. Você pode referenciar ele pelo nome localhost. O nome do banco de dados é objota, neste exemplo. Por padrão no phpMyAdmin o nome padrão de usuário é root. Senha até então não existe, então simplesmente não forneça nada. Porta padrão é 3306. Vejamos o código abaixo:

<?php

$con = mysqli_connect("localhost","root","","objota","3306");

if(!$con){
	echo "Ops! <br/>";
}
else{
	// Se conectou posso fazer uma busca por dados.
	echo "Conectou!!! <br/>";

	//Vejamos um comando SQL para selecionar os dados de nossa tabela.
	$sql = "SELECT id, nome, telefone
			FROM clientes";

	//Forneço o ponteiro de conexão $con e o comando SQL vai no segundo parâmetro
	$rs =  mysqli_query($con, $sql);

	//Extraímos os dados da resource resultante em um array
	$dados = mysqli_fetch_array($rs);

	//Pronto!! eis os dados obtidos
	var_export($dados);
}

?>

Detalhando os acontecimentos. Primeiro me conectei ao banco usando a função mysqli_connect(). Faço uma breve verificação, caso esteja tudo bem prosseguimos com o acesso. Armazeno na variável $sql um comando SELECT que traz todo o conteúdo da tabela.
Logo em seguida utilizo a função mysqli_query($con, $sql) ,  repare que passo como primeiro parâmetro o ponteiro de conexão, em seguida vem a query (comando SQL). Essa função me retorna uma resource , que tecnicamente ainda não são os dados que eu pedi. Afinal quero nome e telefone da tabela. Para extrair desta resource os dados que eu quero, é preciso usar a função mysqli_fetch_array($resource) , veja que forneço a resource como parâmetro e ele finalmente me retorna um array com os dados que eu requisitei.

Obs: Neste exemplo fiz uso da função var_export($var) para mostrar todo o conteúdo do array na tela, muitos programadores usam isto para verificar o conteúdo de uma variável a fim de debugar o um código.

Porém abaixo segue mais um código que faz o mesmo que o código acima. Porém ele acessa os dados do array com um loop e mostra na tela de forma mais “apresentável”.

<?php

$con = mysqli_connect("localhost","root","","objota","3306");

if(!$con){
	echo "Ops! <br/>";
}
else{
	// Se conectou posso fazer uma busca por dados.
	echo "Conectou!!! <br/>";

	//Vejamos um comando SQL para selecionar os dados de nossa tabela.
	$sql = "SELECT id, nome, telefone
			FROM clientes";

	//Forneço o ponteiro de conexão $con e o comando SQL vai no segundo parâmetro
	$rs =  mysqli_query($con, $sql);

	//Extraímos os dados da resource resultante em um array
	while($dados = mysqli_fetch_array($rs)){

		// Com o uso do caracter ponto "."
		// é possível concatenar (unir) trechos de string
		echo "<b>Nome:</b> ".$dados['nome']." <b>Telefone:</b> ".$dados['telefone']."<br/>";
	}
}

?>

extra: veja este vídeo que mostra o phpMyAdmin em uso video

Bom pessoal, este artigo acaba aqui, porém ainda tem muita coisa pra falar e exemplificar. Foi apenas um breve exercício, mas espero ter ajudado em algo. No próximo artigo adentraremos um pouco mais em orientação a objetos, e veremos futuramente acesso a banco de dados usando um objeto. Dúvidas?

Posted by Rodrigo Ireno

Comentários (4) Trackbacks (1)
  1. Muito bom. As dicas foram de grande ajuda para meu trabalho.

    • Se achou bacana utilizar conexão com banco de dados, não deixe de expiar um pouco os artigos sobre conexão com banco de dados utilizando o objeto PDO do php.
      grande abraço!

  2. Olá Rodrigo !

    Gostei muito do seu artigo espero os próximos como dito!

    manipulando Banco de Dados MySQLi com POO
    manipulando Banco de Dados com POO PDO

    seria ótimos poder ter estes artigos


Leave a comment