Foros del Web » Programando para Internet » PHP »

Problema al utilizar resultado de SP con PHP y mysqli.

Estas en el tema de Problema al utilizar resultado de SP con PHP y mysqli. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/01/2011, 09:15
 
Fecha de Ingreso: enero-2011
Mensajes: 10
Antigüedad: 13 años, 11 meses
Puntos: 0
Problema al utilizar resultado de SP con PHP y mysqli.

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.
  #2 (permalink)  
Antiguo 19/01/2011, 09:38
 
Fecha de Ingreso: enero-2011
Mensajes: 10
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Problema al utilizar resultado de SP con PHP y mysqli.

He quitado el último mysqli_free_result($resultado); y con un SELECT funciona, pero al invocar un sp con CALL no devuelve nada ni tampoco error.

Gracias.
  #3 (permalink)  
Antiguo 20/01/2011, 06:17
 
Fecha de Ingreso: enero-2011
Mensajes: 10
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Problema al utilizar resultado de SP con PHP y mysqli.

Buen día,
he probado con un procedimiento en el cual se ejecuta un SELECT más sencillo, con este código me muestra bien el resultado:



$conexion = mysqli_connect($DBhost, $DBuser, $DBpass, $DBname);

if (mysqli_connect_errno()) {
printf("Falló la conexión: %s\n", mysqli_connect_error());
exit();
}

$query = "CALL sp_sencillo()";


$resultado = mysqli_query($conexion, $query);

while ($fila = mysqli_fetch_array($resultado, MYSQLI_ASSOC)) {

echo 'Campo 1: '.$fila['campo1'].'<br>';
echo 'Campo 2: '.$fila['campo2'].'<br>';
echo 'Campo 3: '.$fila['campo3'].'<br>';
echo 'Campo 4: '.$fila['campo4'].'<br>';
echo 'Campo 5: '.$fila['campo5'].'<br>';
echo 'Campo 6: '.$fila['campo6'].'<br>';
echo 'Campo 7: '.$fila['campo7'].'<br>';

echo '<hr>';

}
mysqli_free_result($resultado);

mysqli_close($conexion);


Así que ya descarto la sintaxis de PHP y me concentro en el procedimiento real.

Gracias.

Etiquetas: mysqli, resultados, utilidades
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 17:40.