Obtener valor parámetro out de procedimiento mysql desde PHP

publicado por: Anonymous

Buenas noches,

Tengo una duda, no se como hacerlo:
Tengo un procedimiento almacenado en Mysql, con parámetros de entrada y uno de salida, lo que quiero es que después de enviar los parámetros de entrada, capturar el mensaje del parámetro de salida, pero no encuentra información puntual sobre esto.

Gracias.

solución

Prueba esto en mysqli.

<?php
//Nos conectamos a la base de datos
$mysqli = new mysqli("ejemplo.com", "usuario", "contraseña", "basedatos");
if ($mysqli->connect_errno) {
    //Si ocurre algun error en el intento de coneccion 
    //realizamos alguna accion
    echo "Falló la conexión a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
//Verificamos que el procedimiento no exista,
//Creamos el procedimiento con dos parametros (IN) de entrada y uno de
//salida (OUT). Dicho procedimiento solo concatena los dos parametros de
//entrada y los coloca en el parametro de salida. 
if (!$mysqli->query("DROP PROCEDURE IF EXISTS proc_test") ||
    !$mysqli->query('CREATE PROCEDURE proc_test(IN param_uno VARCHAR(10), IN param_dos VARCHAR(10),OUT param_tres VARCHAR(20)) BEGIN SELECT param_uno + param_dos INTO param_tres; END;')) {
    //Si ocurre un error realizamos una acción
    echo "Falló la creación del procedimiento almacenado: (" . $mysqli->errno . ") " . $mysqli->error;
}

//Preparamos la consulta pasando los valores 'A' y 'B' a los 
//Parametros de entrada
if (!$mysqli->query("SET @param_uno = 'A',@param_dos = 'B'") || !$mysqli->query("CALL proc_test(@param_uno,@param_dos)")) {
     //Si ocurre un error realizamos una acción
    echo "Falló CALL: (" . $mysqli->errno . ") " . $mysqli->error;
}

//Rellenamos la variable $resultado, realizando la consulta.
if (!($resultado = $mysqli->query("SELECT @param_tres as p_out"))) {
    //Si ocurre un error realizamos una acción
    echo "Falló la obtención: (" . $mysqli->errno . ") " . $mysqli->error;
}
//Definimos que nuestro resultado lo trataremos como un array asociativo.
$fila = $resultado->fetch_assoc();

//Imprimimos el resultado.
echo $fila['p_out'];
?>
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *