Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Acceder al valor de la variable salida procedimiento almacenado

Estas en el tema de Acceder al valor de la variable salida procedimiento almacenado en el foro de PHP en Foros del Web. Hola, Tengo el siguente procedimiento almacenado @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original DELIMITER $$ DROP PROCEDURE IF EXISTS a; CREATE PROCEDURE a (     ...
  #1 (permalink)  
Antiguo 06/07/2016, 18:16
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 10 años, 11 meses
Puntos: 10
Acceder al valor de la variable salida procedimiento almacenado

Hola,

Tengo el siguente procedimiento almacenado
Código SQL:
Ver original
  1. DELIMITER $$
  2. DROP PROCEDURE IF EXISTS a;
  3. CREATE PROCEDURE a(
  4.         IN entrada VARCHAR(255),
  5.         OUT salida VARCHAR(255)
  6.     )
  7. BEGIN
  8.     IF(entrada == "mivalor_entrada") THEN
  9.         SET salida = "valor_salida1";
  10.     ELSE
  11.         SET salida = "valor_salida2";
  12.     END IF;
  13. END$$
  14. DELIMITER ;

y en php
Código PHP:
Ver original
  1. $entrada = "mivalor_entrada";
  2. $salida = "";
  3.  
  4. $conexion = new PDO("mysql:host=".$mysql_host.";dbname=".$mysql_bd, $mysql_user, $mysql_password);
  5.  
  6. $sql = "CALL a($entrada,@salida);";
  7.  
  8. $consulta = $conexion->prepare($sql);
  9. $consulta->execute();
  10. $resultado = $consulta->fetchAll();
  11. echo "<pre>";
  12. echo var_dump($resultado);
  13. echo "</pre>";

y me devuelve esto:
Cita:
array (size=0)
empty
No se como podria asignar a la variable php $salida el valor de la variable @salida del procedimiento almacenado.

Gracias
  #2 (permalink)  
Antiguo 06/07/2016, 22:38
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 10 años, 11 meses
Puntos: 10
Respuesta: Acceder al valor de la variable salida procedimiento almacenado

Pues al final googleando mas ... lo resolvi . Lo dejo aqui por si alguien lo necesita.

Primero ya que se trata de PDO hay que pasar las variables como parametros :entrada en vez de $entrada

Código PHP:
Ver original
  1. $sql = "CALL a(:entrada, @salida);";
  2. $consulta = $conexion->prepare($sql);
  3. $consulta->bindParam(':entrada', $entrada, PDO::PARAM_STR);
  4. $consulta->execute();
  5. $consulta->closeCursor(); // dicen por ahí que es muy importante cerrar el cursor

Segundo :
Para poder acceder a la variable @salida del procedimiento almacenado hay que hacer una segunda consulta sql

Código PHP:
Ver original
  1. $sql2 = "SELECT @salida AS salida";
  2. $consulta2 = $conexion->query($sql2);
  3. $resultado2 = $consulta2->fetchAll();
  4.  
  5. echo "<pre>";
  6. echo var_dump($resultado2);
  7. echo "</pre>";

ahora si la respuesta es:
Cita:
array (size=1)
0 =>
array (size=2)
'salida' => string 'valor_salida1' (length=13)
0 => string 'valor_salida1' (length=13)
entonces se puede usar en PHP:
Código PHP:
Ver original
  1. $salida = $resultado2["salida"];

Lo que andaba buscando :)

Saludos
  #3 (permalink)  
Antiguo 07/07/2016, 00:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Acceder al valor de la variable salida procedimiento almacenado

OFF TOPIC en foro de Base de Datos.

Movido a PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bases-de-datos-general, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:32.