Ir para conteúdo

POWERED BY:

Arquivado

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

Arte Dominio

PHP, MySql e ADODB

Recommended Posts

Prezados, Boa tarde...

 

Estou tendo algumas dificuldades ao utilizar stored procedures na minha aplicacao, em um determinado modulo do sistema fui obrigado a criar uma proc

 

Criei uma SP e testei no banco esta funcionando perfeitamente, estou utilizando o PHP4.4.7 e nao tenho a DLL mysqli onde permite realizar multselects no banco... sendo assim realizei algumas pesquisas e encontrei vi que posso utilizar o ADODB sem precisar migrar a aplicacao toda para o PHP5.

 

Duvidas: 1 - Consegui realizar a conexao com o banco sem problemas, apenas nao consigo chamar a proc pelo PHP...segue o codigo da maneira que esta:

 

Ao carregar o formulario preciso executar a proc

 

require_once( "adodb/adodb.inc.php" );
	$conexao = NewADOConnection( "mysql" );
	$conexao->Connect( "localhost", "root", "sdsdooo", "bancoonline" ); 
    	$auxsql = "CALL Historico_Funcionario()"; 
	$result = $conexao->Execute($auxsql);
	while(!$result->EOF) {
	print_r($result->fields("Nome"));
	$rs->MoveNext();

Da o seguinte erro: Fatal error: Call to a member function on a non-object in

 

2 - A segunda dúvida esta em como criar um array conforme o resultado das querys existentes na proc? com o mysql_query faço assim:

 

while($dados = mysql_fetch_array($result)) {

echo "<tr><td>".$dados[0]."</td><td>".$dados[1]."</td>";

 

Como fazer com o ADODB, preciso que apresente desta forma o resultado...

 

Alguem da uma ajuda por favor.´Já consegui solucionar muitos problemas atraves deste forum... conto com a ajuda de você´s..

 

forte abraço e muito obrigado http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Luis Fernando

artedominiobr@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca trabalhei com SP em MYSQL.. Já usei com SQL SERVER e no SQL SERVE você chama a procedure assim:

 

 

$auxsql = "EXEC Historico_Funcionario"; 

Se tiver que passar parametros para a procedure faz assim

$auxsql = "EXEC Historico_Funcionario '$parametro1' ,'$parametro2' ";

Quanto a forma de pegar os valores retornados na procedure, é do mesmo jeito que já conhece, pois é como ele executar um sql e retornar o resultado....

 

podes pegar o resultado com mysql_fetch_array...

 

Testa aí ve se funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa amigo, boa tarde... obrigado pela atencao.

 

seguinte, o EXEC parece que funcionou, ou seja, o erro que esta dando agora é referente ao array, ficou assim:

 

require_once( "adodb/adodb.inc.php" );

$conexao = NewADOConnection( "mysql" );

$conexao->Connect( "localhost", "root", "malvina", "pcmsoonline" );

$auxsql = "EXEC Historico_Funcionario";

if(mysql_num_rows($auxsql) != 0)

{

while($dados = mysql_fetch_array($auxsql)) {

 

echo "<tr><td>".$dados[0]."</td><td>".$dados[1]."</td>";

}

}

 

Apresenta o seguinte erro: mysql_num_rows(): supplied argument is not a valid MySQL result resource in...

 

talvez o mysql_num_rows e o mysql_fetch_array nao funcione com o ADODB... so usei com o mysql_query

 

pode me ajudar a analizar o que esta havendo, ou melhor como mostrar os resultados das consultas realizadas pela SP

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesmo com esta linha aparentemente da um erro diferejnte veja:

 

<?php

// lotacao atribuicao campo 13

require_once( "adodb/adodb.inc.php" );

$conexao = NewADOConnection( "mysql" );

$conexao->Connect( "localhost", "root", "malvina", "pcmsoonline" );

$auxsql = "EXEC Historico_Funcionario";

$result = $conexao->Execute($auxsql);

if (!$result)

print $conexao->ErrorMsg();

else

while (!$result->EOF) {

print $result->fields[0].' '.$result->fields[1].'<BR>';

$result->MoveNext();

}

 

$result->Close(); # optional

$conexao->Close(); # optional

 

 

?>

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXEC Historico_Funcionario' at line 1

Fatal error: Call to a member function on a non-object in

 

Fogo, raridade alguem que usa o ADODB e procedures com omysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realizei uma pesquisa no link http://phplens.com/lens/adodb/docs-adodb.htm#ex11 onde tem realmente diversos exemplos, por incrivel que pareca nao tem nenhum chamando uma proc semelhante a minha necessidade... acredito que a forma de chamar a proc nao esta correta pois o $conexao->Execute($auxsql); espera uma query e nao executa a proc.

 

Alguem me ajude...... http://forum.imasters.com.br/public/style_emoticons/default/yay.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao consigo chamar a proc pelo PHP...segue o codigo da maneira que esta:

 

Ao carregar o formulario preciso executar a proc

 

require_once( "adodb/adodb.inc.php" );

$conexao = NewADOConnection( "mysql" );

$conexao->Connect( "localhost", "root", "sdsdooo", "bancoonline" );

$auxsql = "CALL Historico_Funcionario()";

$result = $conexao->Execute($auxsql);

while(!$result->EOF) {

print_r($result->fields("Nome"));

$rs->MoveNext();

 

Da o seguinte erro: Fatal error: Call to a member function on a non-object in

 

O que estou fazendo errado? na verdade nunca usei proc no php, testei no mysql e funciona corretamente falta so conseguir apresentar no browser atraves de um script PHP

 

Algem me ajude por favor, vou precisar usar outras SP´s nesta aplicacao...

 

Obrigado a todo

 

forte abraço

Luis Fernando

artedominiobr@hotmail.com

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.