OK, es lo que suponía: estás usando variables de usuario de MySQL en la llamada.
Básicamente es correcto lo que planteas, siempre que tengas en cuenta una cosa: Luego de ejecutarse el SP, bajo ninguna circunstancia se debe cerrar la conexión
antes de leer el valor obtenido en ella, ni perder el enlace a la base,
o la variable se muere.
Es la única precaución que se debe tener, por cuanto las variables de usuario de MySQL existen sólo en la misma conexión a MySQL en que se declaran, no tienen tipo de dato, su valor incial es NULL, y conservan el valor que se les asignó mientras la conexión persista.
Una nota a tener en cuenta es que como su valor es NULL al inicio, o se las inicaliza, o se debe tener cuidado al cargarlas en el SP, porque de no incializarla una asignación incorrecta podría devolver datos nulos.
Ese sería el caso de un SP que hiciera:
En un caso así, si la variable @varexterna no llega inicializada con un valor dado, la asignación se destruye, porque en MySQL cuando sumas, multiplicas, concatenas, etc un valor con NULL... da NULL.
¿Se entiende?
Es decir, lo que habría que hacer, preventivamente en tu código sería:
Código PHP:
<?php
$mysqli = new mysqli("www.servidor.com", "usuario", "contraseña", "base_de_datos");
if ($mysqli->connect_errno) {
echo "Falló la conexión a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
// Inicialziar variable:
$result=$mysqli->query("SET @TotalRows = 0;");
//Obtener las filas de la pagina
$filasResult=$mysqli->query("CALL EncuestaRegistros(...,@TotalRows)");
//Obtener el total de filas
mysqli_next_result($mysqli);
$totalFilasResult = $mysqli->query("SELECT @TotalRows as total");
$totalFilasArray = $totalFilas ->fetch_assoc();
$totalFilas=$total['total'];
?>