Tengo un procedimiento almacenado que tiene varios conjuntos de resultados. ¿Cómo avanzo al segundo conjunto de resultados en mysqli para obtener esos resultados?Recuperar conjuntos de resultados múltiples con procedimiento almacenado en php/mysqli
Digamos que se trata de un procedimiento almacenado como:
create procedure multiples(param1 INT, param2 INT)
BEGIN
SELECT * FROM table1 WHERE id = param1;
SELECT * FROM table2 WHERE id = param2;
END $$
El PHP es algo como esto:
$stmt = mysqli_prepare($db, 'CALL multiples(?, ?)');
mysqli_stmt_bind_param($stmt, 'ii', $param1, $param2);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $id);
Entonces esta es la parte que no puedo ir a trabajar. Intenté usar mysqli_next_result para pasar al siguiente conjunto de resultados, pero no puedo hacerlo funcionar. Logramos que funcione con mysqli_store_result y mysqli_fetch_assoc/array/row, pero por alguna razón todos los ints se devuelven como cadenas en blanco.
¿Alguien más se encuentra con esto y tiene una solución?
¿El procedimiento devuelve la llamada correctamente utilizando mysqli_multi_query() en lugar de una instrucción preparada? – gapple
Oh, lo siento. Mi primera respuesta fue no leer tu comentario correctamente. Necesitamos usar declaraciones preparadas, pero la consulta es correcta y funciona para el primer conjunto de resultados. Simplemente no puedo descifrar cómo avanzar al segundo conjunto de resultados. – MacAnthony