var_dump de resultado da valor nulo. Pero una inspección más profunda devuelve un número entero [duplicado]
Frecuentes
Visto 5,146 equipos
2
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.
1 Respuestas
5
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 php mysqli or haz tu propia pregunta.
Necesitas llamar
fetch_assoc
o similar en un bucle para cada fila para obtener los resultados. - Aleks G¿Qué obtienes si usas print_r en lugar de var_dump - print_r($this->result)? - Abhijit
Probablemente deberías usar
mysqli_fetch_object($this->result);
- Yet Another Geek@AleksG, ese no es el problema. Quiero que var_dump funcione para la depuración. - Jelmer
@Abhijit, eso devuelve los valores correctos. Probé var_export pero me dio el mismo error. print_r funciona. Incómodo que var_dump falla. - Jelmer