Ejecutar un procedimiento almacenado con cursor en PHP

Tengo un procedimiento almacenado al que estoy intentando llamar desde mi php. Aquí está el procedimiento almacenado:

BEGIN
DECLARE done INT DEFAULT FALSE;
declare phone_temp VARCHAR(20) default '';
declare phone_cur cursor for SELECT DISTINCT sentNum FROM Queue;
declare continue handler for not found set done = true;

#create temp table
create temporary table if not exists temp_return AS SELECT * FROM Queue LIMIT 0;
#empty if exists
delete from temp_return;

open phone_cur;

phone_loop: LOOP
    fetch phone_cur into phone_temp;
    if done then
        leave phone_loop;
    end if;

   insert into temp_return SELECT * FROM Queue WHERE num2=phone_temp LIMIT 2;
   insert into temp_return SELECT * FROM Queue WHERE num1=phone_temp LIMIT 1;
end loop phone_loop;
close phone_cur;

select * from temp_return;

drop table if exists temp_return;
END

Directamente en mysql workbench, llamarlo funciona. En php, no funciona. Aquí está mi php:

function grabFromSmsQueue(){
    global $myStmt, $conn;
    if(isset($myStmt)){
        $myStmt -> execute();
    }
    else{
        $query = "CALL myStoredProc();";
        $myStmt = $conn->stmt_init();
        $myStmt -> prepare($query);
        $myStmt -> execute();

    }
    $result = $myStmt -> get_result();
    //print_r ($result);
    $info = [];
    if(isset($result)){
        while($data = $result->fetch_assoc()){
            $info[] = $data;
        }
    }
    return $info;
}

Conectando así, obtengo el siguiente error

The localhost page isn’t working
localhost didn’t send any data.
ERR_EMPTY_RESPONSE

Rastreé mi problema hasta un problema con$data = $result->fetch_assoc(), porque cuando comento eso y pongo elprint_r Me devuelve algo, que esmysqli_result Object ( [current_field] => 0 [field_count] => 9 [lengths] => [num_rows] => 0 [type] => 1 ). He llegado a la conclusión de que no funciona porque[num_rows] => 0.

Ahora, volviendo a mi procedimiento almacenado, saqué todas las menciones de un cursor y lo reemplacé con un valor codificado, y funcionó tanto en workbench como en php. Ya he verificado que el usuario que se conecta a través de php tiene permiso, que la conexión está abierta y que el mismo código puede ejecutar otros procedimientos almacenados (que no incluyen cursores). ¿Significa esto que no puedo usar cursores en procedimientos almacenados que están siendo llamados por php? ¿Hay alternativas a los cursores? ¿Me falta algo en mi sintaxis php para tratar con los cursores?

Respuestas a la pregunta(1)

Su respuesta a la pregunta