- Como Criar Um Site, Blog – WebMaster.pt - http://www.webmaster.pt -

Stored Procedure Com PHP E MySQL

Tweet [3]

Há um tempo atrás publicamos várias matérias sobre o uso do Stored Procedure, porém, relacionados ao SQL.

Hoje estaremos publicando alguns comandos essenciais para seu uso junto ao MySQL.

Se você está começando agora em programação web e não sabe o que é Stored Procedure, falarei um pouco sobre ele abaixo antes de focarmos no assunto. ok?

O Que É Stored Procedure?

O Stored Procedure é uma coleção de comandos em SQL que tem por finalidade encapsular tarefas repetitivas, aceitando parâmetros de entrada e retornando um valor de status (para indicar aceitação ou falha na execução).

O procedimento armazenado pode reduzir o tráfego na rede, melhorar a performance, criar mecanismos de segurança, etc.

Geralmente o uso desta ferramenta é simple e facilita bastante o trabalho do Programador!

Abaixo vamos mostrar um exemplo simples que poderá facilitar e muito a vida de qualquer programador.

Estude, teste em seu Servidor e a partir dele, faça a adaptação para seus scripts!

Trabalhando Com A Stored Procedure

Agora que sabemos as vantagens em se usar um SP, vamos para um exemplo prático?

O exemplo que darei abaixo, pode ser usado em sistemas diversos, desde que seja corretamente customizado.

Criando as Tabelas:

Crie a tabela abaixo em sua base de dados, conforme o exemplo abaixo:


CREATE TABLE `cidade` (
  `id_cidade` int(11) NOT NULL auto_increment,
  `id_pais` int(11) default NULL,
  `nome` varchar(80) default NULL,
  `populacao` longtext,
  PRIMARY KEY  (`id_cidade`)
) TYPE=MyISAM;

DROP TABLE IF EXISTS `pais`;
CREATE TABLE `pais` (
  `id_pais` int(11) NOT NULL auto_increment,
  `nome` varchar(80) NOT NULL default '0',
  `idioma` varchar(50) default NULL,
  PRIMARY KEY  (`id_pais`)
) TYPE=MyISAM;

Após criar as tabelas, vamos a um exemplo básico de stored procedure?

Criando a Stored Procedure:



DELIMITER $$

DROP PROCEDURE IF EXISTS `listar_paises` $$

CREATE PROCEDURE `listar_paises`(IN _id INT)

BEGIN
      IF(_id IS NULL) THEN
        SELECT * FROM pais;
      ELSE
        SELECT *  FROM pais where id_pais = _id;
      END IF;
   END $$
DELIMITER ;

Vamos entender como funciona?

Bem… eu já criei minha base de dados e criei junto ao phpMyAdmin a SP (conforme imagem a seguir).

Veja que no próprio phpMyADmin você terá a chance de testar o parâmetro criado, criando seu próprio código em PHP!

Abaixo vamos dar alguns exemplos para você implementar em seus scripts, ok?

Usando O PHP

Para efetuar uma conexão através do script em PHP, o procedimento também é básico. Basta seguir os detalhes descritos no código (conforme trecho abaixo):


<?php

class MySQL {
                var $host = 'localhost';
                var $usr = 'quemuel_quemuel';
                var $pw  = 'quemuel123';
                var $db  = 'quemuel_procedure';

                var $sql; // Query - instrução SQL
                var $conn; // Conexão ao banco
                var $resultado; // Resultado de uma consulta

                function MySQL() {
                }

                // Esta função conecta-se ao banco de dados e o seleciona.
                function connMySQL() {
                               $this->conn = mysqli_connect($this->host, $this->usr, $this->pw, $this->db);
                               if (!$this->conn) {
echo "<p>Não foi possível conectar-se ao servidor MySQL.</p>\n" .
"<p><strong>Erro MySQL: " . mysqli_connect_error() . "</strong></p>\n";
                                               exit();
                               } elseif (!mysqli_select_db($this->conn, $this->db)) {
                                               echo "<p>Não foi possível selecionar o Banco de Dados desejado.</p>\n" .
"<p><strong>Erro MySQL: " . mysqli_error($this->conn) . "</strong></p>\n";
                                               exit();
                               }
                }

// Função para executar SPs (Stored Procedures). Utiliza-se a função mysqli_multi_query()
// porque as SPs retornam mais de um conjunto de resultados e a função mysqli_query() não consegue
// trabalhar com respostas múltiplas, ocasionando eventuais erros.
                function execSP($sql) {
                               $this->connMySQL();
                               $this->sql = $sql;
                               if (mysqli_multi_query($this->conn, $this->sql)) {
                                               $this->resultado = mysqli_store_result($this->conn);
                                               $row = mysqli_fetch_row($this->resultado);
                                               $this->closeConnMySQL();
                                               mysqli_free_result($this->resultado);
                                               return $row[0];
                               } else {
                                               echo "<p>Não foi possível executar a seguinte instrução “.
“SQL:</p><p><strong>$sql</strong></p>\n".
"<p>Erro MySQL: " . mysqli_error($this->conn) . "</p>";
                                               exit();
                                               $this->closeConnMySQL();
                               }
                }

                //Função para encerramento da conexão com o banco de dados.
                function closeConnMySQL() {
                               return mysqli_close($this->conn);
                }
} // Finaliza a classe MySQL

//Instancia novo objeto da classe MySQL.
$mySQL = new MySQL;

?>

IMPORTANTE: Para usar as funcionalidades de Stored Procedure do MySQL, você deverá incluir a linha a seguir no “PHP.INI”:

“extension=php_mysqli.dll”.

Obs.: A DLL também deverá estar habilitada.

Em Servidores web com o CPanel, geralmente já vem configurado! Se for outra estrutura é necessário configurar manualmente.

- Para evitar erros, trabalhe na estrutura LAMP, pois nela você terá suporte ao PHP 5 e MySQL 5. Em outras versões poderá dar erro.

Bem… este foi apenas um pontapé inicial para iniciarmos os trabalhos com o Stored Procedure.

Nas próximas edições estaremos explorando o comando “CALL” e postando informações detalhadas que com certeza lhe ajudarão em seus Projetos.

Download do código usado neste tutorial: Store Procedure Com PHP E MySQL [4]

Tweet [3]
Be Sociable, Share!
  • [5]
  • [6]
  • [7]
  • [8]
  • [9]