var_dump de resultado da valor nulo. Pero una inspección más profunda devuelve un número entero [duplicado]

Posible duplicado:
El nuevo objeto Mysqli es nulo

Acabo de comenzar con la construcción de mi clase de base de datos para mi marco MVC. Mientras construyo esto, estoy experimentando con consultas y tablas simples para que funcione correctamente.

Estaba tratando de consultar lo siguiente:

SELECCIONE * DESDE mvc_test

Esto debería devolver 3 filas:

1 | prueba

2 | prueba2

3 | prueba3

Utilizo el siguiente método para consultar:

<?php $this->result = $this->conn->query($this->q); ?>

Donde $this->conn es:

<?php 
 $this->conn = new mysqli($this->reg->conf->database['host'],
 $this->reg->conf->database['user'],
 $this->reg->conf->database['password'],
 $this->reg->conf->database['database']);
?>

Donde $this->reg->conf->database contiene todos los valores para host, base de datos, etc. Esto funciona, tengo una conexión.

Ahora, cuando var_dump el resultado es así:

<?php var_dump($this->result); ?>

Entiendo esto:

objeto(mysqli_result)[9]

público 'campo_actual' => nulo

public 'field_count' => nulo

'longitudes' públicas => nulo

public 'num_rows' => nulo

'tipo' público => nulo

Pero, como se dijo antes, debe contener al menos 3 filas, por lo que esperaría que num_rows sea '3'.

Ahora, cuando var_dump el num_rows del resultado de esta manera:

<?php var_dump($this->result->num_rows); ?>

Obtengo un 'int 3' como respuesta.

Conclusión: en el primer var_dump es nulo, pero con una inspección más profunda obtengo un 3. Así que lee 3 filas. Cuando agrego otra fila (la 4), devuelve un 4 como se esperaba.

Mi pregunta es: ¿por qué var_dump no funciona correctamente? ¿Por qué dice nulo al principio, pero con una inspección más profunda tiene un valor?

Gracias de antemano, realmente estoy luchando con este ya que tampoco recibo ningún error.

preguntado el 01 de julio de 12 a las 20:07

Necesitas llamar fetch_assoc o similar en un bucle para cada fila para obtener los resultados. -

¿Qué obtienes si usas print_r en lugar de var_dump - print_r($this->result)? -

Probablemente deberías usar mysqli_fetch_object($this->result); -

@AleksG, ese no es el problema. Quiero que var_dump funcione para la depuración. -

@Abhijit, eso devuelve los valores correctos. Probé var_export pero me dio el mismo error. print_r funciona. Incómodo que var_dump falla. -

1 Respuestas

El objeto se implementa "perezosamente", es decir, no recupera datos del servidor hasta que realmente se requiere (es decir, accede a algo desde el objeto de resultado).

var_dump no parece activar los captadores de propiedades, por lo que se muestran como null.

Respondido 01 Jul 12, 23:07

Gracias por su respuesta. Sin embargo, parece bastante extraño, ya que funciona en la computadora de un amigo mío. También tiene su propio marco y también usa mysqli, obtiene los valores adecuados cuando usa var_dump en el resultado. Es raro. Pero gracias por la respuesta. - Jelmer

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.