Stored Procedure Com PHP E MySQL

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?

  • DELIMITER $$ – Servirá para informar onde começa e termina o sistema.
  • DROP PROCEDURE – Para excluir uma procedure, o procedimento é simples: Basta utilizar a cláusula “DROP PROCEDURE”, conforme o exemplo acima.
  • CREATE PROCEDURE – Essa é a parte onde solicitarei ao Sistema para criar uma Procedure, disponibilizando entre o BEGIN (que informará onde inicia) e END (que informará onde termina) os parâmetros.

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):


conn = mysqli_connect($this->host, $this->usr, $this->pw, $this->db);
if (!$this->conn) {
echo "

Não foi possível conectar-se ao servidor MySQL.

\n" .
"

Erro MySQL: " . mysqli_connect_error() . "

\n";
exit();
} elseif (!mysqli_select_db($this->conn, $this->db)) {
echo "

Não foi possível selecionar o Banco de Dados desejado.

\n" .
"

Erro MySQL: " . mysqli_error($this->conn) . "

\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 "

Não foi possível executar a seguinte instrução “.
“SQL:

$sql

\n".
"

Erro MySQL: " . mysqli_error($this->conn) . "

";
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

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)

3 Responses

  1. Gostei do tutorial. Ficaria melhor se o código fosse mais explicado e organizado. Por exemplo: mysqli_free_result é…

  2. Achei excelente esse tutorial, mais gostaria de saber como eu faço para colocar o resultado na minha tela index.php. Tentei assim mais não exibe nada … nem mesmo erro. Alguma dica ?

    <?php//Conexao com Banco de Dados// Fazemos nosso include da nossa classeinclude 'proc.php';//Instancia novo objeto da classe MySQL.$mySQL = new MySQL;$mySQL->execSP("call busca();");echo $mySQL->resultado;
    ?>

  3. Bom dia,
    Tenho uma duvida, criei a stored procedure certinha, mas nesse uso no php aonde vc passa o nome da stored procedure que voce criou ?
    Desde já agradeço a atenção.

Leave a Reply

Your email address will not be published. Required fields are marked *


Como Criar Um Site, Blog - WebMaster.pt