Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ricardo Andrietta

[Resolvido] Store Procedure com PHP e MySQL

Recommended Posts

Pesoal, bom dia.

 

Preciso de uma ajudinha de vcs.

 

Criei uma Store Procedure no MySQL

 

DELIMITER $$

DROP PROCEDURE IF EXISTS `empresa`.`sp_lista_usuarios` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_lista_usuarios`(IN vNome VARCHAR(30))
BEGIN
   SELECT * FROM jos_users WHERE name LIKE vNome LIMIT 0,15;
END $$

DELIMITER;

No MySQL Browser (obtido no site do MySQL Brasil) eu chamo esa SP da seguinte forma:

 

CALL sp_lista_usuarios('%ricardo%')

Os dados listados estão certinhos, mas não estou conseguindo litar eles com o PHP.

 

Estou usando o mysql_query.. segue o código

$hostname = "localhost";
$database = "empresa";
$username = "root";
$password = "";
$conexao = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 

mysql_select_db($database);

$spSQL = "CALL sp_lista_usuarios('%ricardo%')";

$rsSQL = mysql_query($spSQL,$conexao) or die(mysql_error());

while ($row = mysql_fetch_object($rsSQL))
	{
	echo $row->name."<br>";
	}

Mas vem o seguinte erro:

 

PROCEDURE empresa.sp_lista_usuarios can't return a result set in the given context

 

Provavelmente porque eu estou chamando a SP de forma errada.

 

Desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara pelo que eu sei, o mysql_query() não executa procedure, para essa função deverá usar o mysqli -> multi_query();

 

Podendo ser usada assim:

 

# instancia a conexão com o banco.
$mysqli = $this -> __conecta();

$this -> sql = "CALL sp_usuarios('param')";
				

if($mysqli -> multi_query($this -> sql))
{

	$store = $mysqli -> store_result();
					
	# fecha a conexão com o banco de dados
	$mysqli -> close();
				
	return $store;
}
else
	echo "Falha na conexão";
	exit;

Esse script acima, é um pedaço de um método de uma classe de acesso a dados que eu tenho implementada em meus projetos.

É dessa forma que eu uso storeprocedures. Lembrando que mysqli só existe a partir do PHP5.

 

Boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo Teixeira,

 

Não usei exatamente este código que você postou, mas ele me deu uma baita luz...

 

criei uma classe que executa tanto uma SQL quanto uma Store Procedure.

 

RESOLVIDO!!!

 

muito obrigado mesmo!!

 

Grande abraço

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

posta ai o codigo porque estou precisando da mesma solucao... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.