Jump to content


Photo

Php + Mysql Procedures


  • Faça o login para participar
2 replies to this topic

#1 Ezequiel Schnaider

Ezequiel Schnaider

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino

Posted 31/01/2008, 08:27

Olá pessoal.
Estou tendo uma dificuldade na hora de executar um procedimento criado no MySQL no meu script php.
A rotina está executando certinho no banco via linha de comando mas na hora de trbalhar com ela no script me é retornado o seguinte erro:

"PROCEDURE sistemasabojeris.getMenuRaiz can't return a result set in the given context"

O meu script PHP está assim:

<?

	//CONECTA COM O BANCO DE DADOS
	require_once("conectabojeris.php");
	$Procedure_Menu = "call getMenuRaiz()";

	$menu_princ = MYSQL_QUERY($Procedure_Menu) or die (mysql_error());

	$Codigo_Pai = array();
	
	echo "<ul id=\"primary-nav\">";
	echo "<li class=\"title\">Avaliação de Bens</li>";
	//while($dados = mysql_fetch_array($menu_princ))
	while($dados = mysql_fetch_assoc($menu_princ))
	{
		$id	 = $dados['id'];
		$id_pai = $dados['id_pai'];
		$menu   = $dados['menu'];
		$filho  = $dados['filho'];
		$url	= $dados['url'];
		$nivel  = $dados['nivel'];

		if ($url == "")
		{
			$url = "#";
		}

		if ($filho > 0)
		{
			echo "<li class=\"menuparent\"><a href=\"" + $url + "\">" + $menu + "</a>";
			echo "<ul>";
			$Codigo_Pai[sizeof($Codigo_Pai)] = $id_pai;
		}
		else
		{
			echo "<li><a href=\"" + $url + "\">" + $menu + "</a></li>";
		}

		if (sizeof($Codigo_Pai) > 0)
		{
			if ($id_pai <> $Codigo_Pai[sizeof($Codigo_Pai)])
			{
				echo "</ul>";
				echo "</li>";
				unset($Codigo_Pai[sizeof($Codigo_Pai)]);
			}
		}
	}
	echo "<li class=\"ultimo\"><a href=\"#\">Avaliações Salvas</a></li>";
	echo "<li class=\"sair\"><a href=\"java script:\" class=\"sair\" onclick=\"confirma_saida();\" target=\"_parent\">Sair</a></li>";
	echo "</ul>";

?>

Se alguém tiver uma idéia de como ou pq isso está acontecendo seria de muita utilidade.

Acho até que achei a solução para esse problema, seria usando o mysqli_ para efetuar as operações. Agora só falta testar para ver se funciona mesmo. Mas assim que eu testar posto o código aqui.

___________________________________

Ezequiel Schneider
EJ Target - Systems & Support
www.ejtarget.com.br
___________________________________


#2 felipe marques

felipe marques

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 24/07/2008, 00:08

Isto mesmo colega... para trabalhar com procedures é necessario voce ter a lib mysqli habilitada no seu php.ini, eu tambem ja tive problemas num servidor com php 4 e tentei trabalhar com pdo mas mesmo assim nao deu.. o jeito foi migrar pro php5 que foi muito bom por sinal.

Aqui vai uma dica para deixar com melhor desempenho e melhor visualizacao seu codigo:

Ao inves de usar aspas duplas, no seu echo :

echo "<li class=\"sair\"><a href=\"java script:\" class=\"sair\" onclick=\"confirma_saida();\" target=\"_parent\">Sair</a></li>";

utilize aspas simples:

C/ aspas duplas:

echo "<li class=\"sair\"><a href=\"java script:\" class=\"sair\" onclick=\"confirma_saida();\" target=\"_parent\">Sair</a></li>";

C/ aspas simples:

echo '<li class="sair"><a href="java script:;;" class="sair" onclick="confirma_saida();" target="_parent">Sair</a></li>';

Nao acha que fica melhor assim ?

De acordo com o manual do php ... na compilacao do codigo php o interpretador ao passar pelas linhas que possuem aspas duplas ele tenta verificar se nao ha alguma variavel embutida ( ex: echo "$var - eu to aqui") ja com as aspas simples ele simplesmente imprime (ex: echo '$var - eu to aqui').


Mas se voce nao conseguir posta aqui que a gente te ajuda. T+

Edição feita por: felipe marques, 24/07/2008, 00:14.


#3 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 25/07/2008, 12:39

Algumas dicas quando se trabalha com procedures:

- Verifica se ela não está retornando mais de um resultado.
- Execute ela num console mesmo, nada de phpMyAdmin ou MySQLBrowser, no prompt mesmo, para ver o que ela retorna.
- Utilize mysqli : Mysql Improved xD



[]'s

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq