PHP

Em por

Veremos neste artigo de forma bem prática, como se conectar ao Banco de Dados MySQL utilizando uma classe com PDO e utilizar os recursos desta conexão de forma eficiente.

Conexão com MySQL e PDO no PHP

Veremos neste artigo de forma bem prática, como se conectar ao Banco de Dados MySQL utilizando uma classe com PDO e utilizar os recursos desta conexão de forma eficiente.

Trabalhar com PDO, no inicio parece ser muito difícil, mas nem tudo é o que parece. Comece com exemplo simples, como o que vamos ensinar aqui e depois de entender o código, vá aumentando aos poucos os procedimentos.

Uma coisa eu garanto, aprendendo esta forma de conexão, você poderá aplica-lo a qualquer banco de dados, seja ele MySQL, PostgreSQL, Oracle ou SQLServer.

O que muda e você terá que se preocupar e gastar um pouco mais de tempo é na classe Conexão, pois será preciso criar os parâmetros necessários para o seu banco de dados e instalar o PDO necessário no seu ambiente, caso não o tenha habilitado, fora isso, todo restante do processo não muda.

O que é PDO?

PHP Data Objects ou simplesmente PDO, define uma interface consistente para acesso a banco de dados em PHP, ou seja, com ele você abstrai o BD que está sendo utilizado pela aplicação, onde, a aplicação não sabe qual SGBD está usando, podendo ser MySQL, PostgreSQL, Oracle e etc, não importa.

Se precisar mudar de BD, apenas o Driver ligado ao PDO será alterado, mas o seu código principal continuará intacto e ileso.

Mas porque usar PDO?

Antes da chegada do PDO, a linguagem PHP oferecia suporte à comunicação com diferentes modelos de SGBD através de módulos específicos. A maioria deles provia uma biblioteca de funções e utilizava um resource para representar a conexão e outro para representar um resultset (o resultado de uma consulta). As operações eram feitas sobre as variáveis de resource.

Cada driver implementava suas operações conforme imaginavam ser mais adequados. Embora alguns deles tivessem um funcionamento semelhante, a ordem dos parâmetros nem sempre era a mesma e podia causar uma certa confusão entre programadores.

Configuração do arquivo

Bem, antes de qualquer coisa é necessário ter o driver do PDO para MySQL instalado no seu PHP, e para isso basta executar o comando do Item 1 (se você está trabalhando com Linux/Ubuntu), ou habilitar este módulo como no Item 2 (se estiver usando o WAMP com Windows).

Item 1 - Instalando PDO para MySQL utilizando o LINUX:

sudo pecl install pdo

sudo pecl install pdo_mysql

Tudo pronto, então iremos ativá-lo pelo arquivo php.ini, que pode ser encontrado geralmente em “/etc/php5/apache2/php.ini”. Você deve incluir as seguintes linhas no arquivo desta forma, ou se tiver a hashtag (# ) basta retirá-la:

extension=pdo.so

extension=pdo_mysql.so

Salve o arquivo e agora seu PHP está preparado para trabalhar com PDO. Lembrando que nosso exemplo está voltado apenas para o MySQL, se for utilizar outro BD, basta procurar o driver adequado para cada uma delas.

Item 2 - Instalando PDO para MySQL utilizando o WINDOWS:

Instale o WAMPSERVER, claro, se ainda não o fez e clique com o mouse no ícone que fica perto do relógio, referente ao wamp. Acesse a guia PHP, depois, PHP extensions e habilite o driver do PDO para MySQL, php_pdo_mysql.

Configuração do arquivo

Já temos todo o conceito do funcionamento do PDO em mente (rsrsrsrs), temos também ele instalado e configurado em nosso ambiente, agora só nos resta começar a desenvolver nosso projeto.

Para começar, iremos criar uma classe chamada Conexao.class.php que será responsável por gerenciar as conexões com o banco de dados. É através dessa classe que toda nossa aplicação conversará com o banco e é neste exato ponto que temos a ponte de abstração do PDO. 

Conexao.class.php (Por convenção usamos letra maiúscula no inicio do nome da classe):

 <?php class Conexao { private $data = array(); //variavel da classe Base protected $pdo = null; //métodos mágicos _get e _set do php public function __set($name, $value){ $this->data[$name] = $value; } public function __get($name){ if (array_key_exists($name, $this->data)) { return $this->data[$name]; } $trace = debug_backtrace(); trigger_error( 'Undefined property via __get(): ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'], E_USER_NOTICE); return null; } //método que retorna a variável $pdo public function getPdo() { return $this->pdo; } //método construtor da classe function __construct($pdo = null) { $this->pdo = $pdo; if ($this->pdo == null) $this->conectar(); } //método que conecta com o banco de dados public function conectar() { try { $this->pdo = new PDO("mysql:host=localhost;dbname=sua_base_de_dados", "root", "", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); } catch (PDOException $e) { print "<center><h2>Error!: " . $e->getMessage() . "</h2></center><br/>"; die(); } } //método que desconecta public function desconectar() { $this->pdo = null; } } 

Lembre-se que na configuração você deverá prestar bastante atenção, pois ele é crucial para a perfeita conexão. O host pode conter o nome do seu domínio se estiver hospedado num servidor externo ou, localhost se for a sua máquina local.

Sua_base_dados é exatamente o nome de sua base de dados (não é a tabela), onde logo abaixo tem o nome do usuário e senha definidos no seu MySQL. Se ainda não definiu uma senha em seu Wamp, veja um pouco mais em nosso artigo “Como colocar senha WampServer”.

A classe Conexao implementa um padrão de projeto chamado Singleton, que nos garante que apenas uma instância dela será mantida durante toda a aplicação.

Ao solicitar uma instância na nossa classe Conexao, é chamado o método de construção (__construct), onde se for nulo, ou seja, ainda não foi criado ou já foi fechado por alguma chamada do método “desconectar” ele chama o método “conectar()” e inicia o processo de criação, que explicaremos abaixo:

  1. Local onde está armazenado nosso banco de dados ('mysql:host=localhost;dbname=sua_base_de_dados');
  2. Usuário do banco de dados (seu_usuario), por padrão quando instalamos é “root”; 
  3. Senha do banco de dados (sua_senha), se ainda não colocou nenhuma, é vazio;
  4. Um array com vários parâmetros aceitos pelo PDO. Em nosso caso, setamos apenas um parâmetro que diz respeito ao charset utilizado pelo MySQL, que será UTF8.

Para conhecer todos os atributos você pode ler o manual do PDO no site oficial do PHP, isso porque eles são muitos e você pode realizar diversas operações com eles, mas estes fogem do escopo do nosso artigo.

Finalmente temos nossa conexão criada e configurada via PDO com nossa base de dados MySQL.

Já temos nossa conexão criada e configurada via PDO com nossa base de dados MySQL. Lembra que falamos antes, que é neste ponto que ocorre a comunicação direta da nossa aplicação com a base de dados? Então é exatamente aqui o único local que precisaremos mudar caso seja necessário trocar nosso banco de dados de MySQL para qualquer outro.

Para testar se nossa conexão está funcionando, iremos criar um arquivo que daremos o nome de index.php (pode ser o nome que preferir) desta forma:

 <?php //incluimos o caminho do arquivo Conexao include_once("admin/class/Conexao.class.php"); //instanciamos a classe e fazemos a conexao pelo construtor $pdo = new Conexao(); echo '<br/><br/>'; //coloque seus procedimentos aqui caso tenha sucesso na conexao echo '<center><h1>Conex&atilde;o realizada com sucesso!</h1></center>'; //depois de feito seus procedimentos, sempre desconecte do BD $pdo->desconectar(); echo '<br/><br/>'; echo '<center><h1>Desconectado do BD!</h1></center>'; ?> 

Perceba que se a aplicação estiver correta, irá retornar uma mensagem de Sucesso!” e caso contrário “Erro, contendo uma mensagem do erro (inglês)”.

Em breve, vamos prosseguir com nosso artigo mostrando como utilizar nossa classe Conexao.class.php em nossa aplicação, para acesso ao Painel de Controle através de uma tela de LOGIN, mas para isso iremos montar um cenário de teste para melhor entendimento, aguardem...

Dúvidas, críticas ou sugestões comentem abaixo e bons estudos laugh


Para baixar o exemplo completo clique aqui...

Veja Também:

Artigos Relacionados a categoria: PHP

Olá, deixe seu comentário para Conexão com MySQL e PDO no PHP

Enviando Comentário Fechar :/

...AINDA NÃO VIU NOSSO PORTFÓLIO?

Se ainda não viu nosso Portfólio e quer conhecer um pouco mais... aproveite e veja agora mesmo e tenha um site de qualidade para o seu negócio!

[contato]
Ver o Portfólio Agora