Buen día,
con PHP y mysqlli intento utilizar un procedimiento almacenado creado para MySQL, dicho procedimiento devuelve el resultado de un SELECT (varias filas).
Mi problema es cuando al ejecutar el script ocurre:
Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, null given in
Al reemplazar el llamado al procedimiento (con CALL) por un SELECT común, me devuelve los datos pero también me muestra dicho warning.
He encontrado en el foro un consejo de GatorV, que se debe utilizar mysqli_next_result() para moverse al siguiente resultado de un sp.
He probado el ejemplo de: http://www.php.net/manual/es/mysqli.multi-query.php y sigue igual.
El código:
<?php
// habiendo seteado las variables para la conexión.
$conexion = mysqli_connect($DBhost, $DBuser, $DBpass, $DBname);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "CALL proc_para_sacar_duda('2010-01-01', '2011-01-18', 0, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0, NULL, NULL)";
if (mysqli_multi_query($conexion, $query)){
do {
// store first result set
if ($resultado = mysqli_store_result($conexion)) {
while ($row = mysqli_fetch_array($resultado, MYSQLI_ASSOC)) {
echo $row["campo1"].'<br>';
echo $row["campo2"].'<br>';
echo $row["campo3"].'<br>';
echo $row["campo4"].'<br>';
echo $row["campo5"].'<br>';
echo '<hr>';
}
mysqli_free_result($resultado);
}
/* print divider */
if (mysqli_more_results($conexion)) {
printf("-----------------\n");
}
} while (mysqli_next_result($conexion));
}
mysqli_free_result($resultado);
mysqli_close($conexion);
?>
Muchas gracias.