|
||
|
|
Conheça o Plugfeed | » Início » Desenvolvimento » Banco de dados e SQL » Chamando do php funções mysql
Conheça o Plugfeed | » Início » Desenvolvimento » Banco de dados e SQL » Chamando do php funções mysql
--> |
|
Avaliação: Não avaliado | Publicado em: 30/06/2008
Chamando do php funções mysql
José Roberto Gomes da Silva programador PHP na RCT Retail, desenvolve trabalhos em PHP/Javascript, Action Script
Chamando do php funções mysql
//Criação da tabela para o manter os dados iniciais CREATE TABLE `testetrigger`.`teste1` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(60) NOT NULL, `sts` enum('0','1') NOT NULL, `obs` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) //Inclui dados para teste INSERT INTO `testetrigger`.`teste1` VALUES (1,'teste1','0','Incluido manualmente'), (2,'teste2','0','Incluido manualmente'), (3,'teste3','0','Incluido manualmente'), (4,'teste4','1','Incluido manualmente'), (5,'teste5','1','Incluido manualmente'), (6,'teste6','1','Incluido manualmente'), (7,'teste7','1','Incluido manualmente'); //Criação da tabela que será gravada pela funcion CREATE TABLE `testetrigger`.`teste2` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(60) NOT NULL, `sts` enum('0','1') NOT NULL, `obs` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) Já com a base de dados teste criada vamos construir nossa function no mysql. //Altera o delimitador de código DELIMITER $$ //criação da função testando CREATE FUNCTION `testando`() RETURNS int(11) //delimitando bloco da função BEGIN //Declarando variáveis para receber os valores DECLARE nm VARCHAR(25); DECLARE st ENUM('0','1'); //declarando a variável de controle do laço DECLARE done INT DEFAULT 0; //Declarando o cursor que retornará o respectivo sql da tabela 1 DECLARE cur CURSOR FOR SELECT nome, sts FROM teste1; //Declaração do handler para o loop do cursor 'cur' DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; //Abro o cursor para o loop OPEN cur; //Bloco do loop do cursor REPEAT //Com o fatch extraio os valores do cursor para as variáveis nm e st FETCH cur INTO nm,st; //Este if verifica se o cursor está encerrado... caso não esteja executa a query IF NOT done THEN //neste momento executa a query que irá incluir os valores vindo do sql da tabela1 para a tabela2 alterando apenas a observação INSERT INTO teste2( nome , sts , obs ) VALUES( nm, st , CONCAT( 'Incluido por trigger|status=' , st ) ); //encerra o if END IF; //verifica se chegou ao fim do cursor, caso não retorna até o campo repeat para continuar com o loop UNTIL done END REPEAT; //Encerra o cursor CLOSE cur; //retorno da função RETURN 1; //encerra o bloco da função END $$ //retorna o delimitador padrão do mysql DELIMITER ; Como podem ver não é muito complicado trabalhar com uma função no mysql utilizando cursor... basicamente vc declara uma variável do tipo cursor setando a query diretamente nela... declara o handler que vai controlar o laço desse cursor... uma boleana que vai verificar se esse laço chegou até o seu fim, abre o cursor e coloca ele em loop com o comando repeat. Dentro do laço recupera a informação do cursor como comando fetch e executa o insert com os valores retornado. após a transação fecha o cursor e encerra a função depois de criada a função, vamos ao php <?php //Conexão com base de dados $db = mysql_connect( "localhost" , "nome do usuario" , "senha do usuario" ); mysql_select_db("testetrigger"); //Chamando a função na base de dados mysql_query( "SELECT testando()" ); print "<h2>Ativando Funcition no mysql</h2>"; for( $i = 1 ; $i < 3 ; $i++ ){ //select das tabelas para exibir conteudo na tela $qry = mysql_query( "SELECT * FROM teste{$i}" ); print "<div style='border:solid 1px #DDD; width:650px'>" . "<h3>Exibindo resultado tabela {$i}</h3>"; //Exibe conteudo na tela while( $rs = mysql_fetch_object( $qry ) ) print "<hr>Descricao = {$rs->nome} - obs = {$rs->obs}<hr>"; print "</div>"; } die("################### [ Fim de teste ] ###################"); ?> Bem... no php eu basicamente chamo a função do mysql, e depois rodo as querys para ver os valores das duas tabelas. O exemplo que estou mostrando aqui é bem símples e com pouca utilidade, mas você pode usar uma função pra infinitas utilidades, e concerteza pode savar sua vida. Exemplos interessantes é validação de cpf, ou formatação de campos ou atualização de dados de várias tabelas com apenas um comando... sei la, a imaginação é quem manda!! Se quiser pode baixar os fonts para estudar o código Espero que tenham gostado... até a próxima! Arquivos anexos ao artigo
Links relacionados
desconhecido
isso é grego , tem que ter saco : Não avaliado
![]() |
|
![]() |
|
|