Excecutar procedure

31/05/2011

0

PHP

Gente eu tenho uma procedure em mysql de um insert mas quando eu executo no php um erro:
(mysql): CALL SpInsertCidade('asadsfsfas',1)   1318: Incorrect number of arguments for PROCEDURE SpInsertCidade; expected 3, got 2
A procedure é:
 
CREATE DEFINER = 'root'@'localhost' PROCEDURE `SpInsertCidade`(
        IN varId INTEGER(11),
        IN varDescricao VARCHAR(60),
        IN varUF INTEGER(11)
    )
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
	IF (exists(select Cid_Id from cidades where (Cid_Id = varId))) THEN
    UPDATE
  		cidades
	SET
  		Cid_Descricao = VarDescricao,
  		UF_Id = varUF
    where (Cid_Id = varId);
    
    ELSE
      INSERT INTO
        cidades(
        Cid_Descricao,
        UF_Id)
      VALUES(
        varDescricao,
        varUF);
      
    END IF;
      
      
END;


a função em php é:
/* função para inserir cidades */
		function gravar(){
			$sql = "CALL SpInsertCidade('".$_REQUEST[CID_DESCRICAO]."',$_REQUEST[UF_ID])";
			$this->resultado = $this->con->banco->Execute($sql);
					
		}

Acredito que o erro seja de concatenação ja que se trata de dois parametros um Varchar e um Inteiro



Sidney Abreu

Sidney Abreu

Responder

Posts

14/06/2011

Natal Lima

Sidney, tenta essa linha na sua função em PHP:
 $sql = "CALL SpInsertCidade('".$_REQUEST[CID_DESCRICAO]."'".,$_REQUEST[UF_ID].")";

Natal de Lima
 
Responder

14/06/2011

Rafael Mattos

Sidney, tenta essa linha na sua função em PHP:
 $sql = "CALL SpInsertCidade('".$_REQUEST[CID_DESCRICAO]."'".,$_REQUEST[UF_ID].")";

Natal de Lima
 



pow amigo sou de Campo Grande/MS tb.
bem dificil ver algum de CG aqui.
Seja bem vindo a o forum


--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
Responder

14/06/2011

Natal Lima

Vlw cara, vi que vc também gosta de Delphi. tava passando por lá pra tentar da umas ajudas pra galera. 
Responder

15/06/2011

Sidney Abreu

Galera dar o seguinte error:

(mysql): CALL SpInsertCidade('asadsfsfas',1)   1318: Incorrect number of arguments for PROCEDURE loja.SpInsertCidade; expected 3, got 2
ADOConnection._Execute(CALL SpInsertCidade('asadsfsfas',1), false) % line 1015, file: adodb.inc.php   ADOConnection.Execute(CALL SpInsertCidade('asadsfsfas',1)) % line 30, file: FrmCidadesCod.php FrmCidades.gravar() % line 32, file: FrmCidadesAcao.php require(C:\wamp\www\CantoDigital\admin\FrmCidadesAcao.php) % line 45, file: index.php
Responder

16/06/2011

Natal Lima

CREATE DEFINER = 'root'@'localhost' PROCEDURE `SpInsertCidade`(
        IN varId INTEGER(11),
        IN varDescricao VARCHAR(60),
        IN varUF INTEGER(11)
    )
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
IF (exists(select Cid_Id from cidades where (Cid_Id = varId))) THEN
    UPDATE
  cidades
SET
  Cid_Descricao = VarDescricao,
  UF_Id = varUF
    where (Cid_Id = varId);
   
    ELSE
      INSERT INTO
        cidades(
        Cid_Descricao,
        UF_Id)
      VALUES(
        varDescricao,
        varUF);
     
    END IF;
     
     
END;


a função em php é:
#Código
/* função para inserir cidades */
function gravar(){
$sql = "CALL SpInsertCidade('".$_REQUEST[CID_DESCRICAO]."',$_REQUEST[UF_ID])";
$this->resultado = $this->con->banco->Execute($sql);

}Sidney, você criou uma procedure que passando três variáveis: (varID, varDescricao e varUF). Mas quando você executa a procedure no PHP você está passando apenas duas. É isso que ele está reclamando. Como o varID provavelmente é inserido automaticamente por trigger, tente alterar sua procedure retirando o varID na linha 2 ou ao executar a function do php, faça o seguinte ajuste:
$sql = "CALL SpInsertCidade('','".$_REQUEST[CID_DESCRICAO]."',$_REQUEST[UF_ID])";
Eu acrescentei duas aspas simples e uma vírgula antes da variável $_REQUEST[CID_DESCRICAO]. Testa aí e informa se deu certo.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar