Foros del Web » Programando para Internet » PHP »

(Mal)utilizando mysqli orientado a objetos

Estas en el tema de (Mal)utilizando mysqli orientado a objetos en el foro de PHP en Foros del Web. Hola, qué tal. A ver si me podéis echar una mano con este problema. Tengo una página PHP (index.php) con las siguientes líneas: ... $sentenciaSQL ...
  #1 (permalink)  
Antiguo 03/02/2005, 11:09
 
Fecha de Ingreso: mayo-2003
Mensajes: 1
Antigüedad: 14 años, 6 meses
Puntos: 0
(Mal)utilizando mysqli orientado a objetos

Hola, qué tal.

A ver si me podéis echar una mano con este problema. Tengo una página PHP (index.php) con las siguientes líneas:



...
$sentenciaSQL = "SELECT * FROM articulo ORDER BY fecha DESC";
$bd = new GestionBDMySql();
$bd->conecta();
$registros = $bd->ejecutaSQL($sentenciaSQL);
while ($registro = $bd->devuelveSiguienteRegistro($registros)) {
...
}
...


Al cargar la página, salta el siguiente error:


Fatal error: Call to a member function fetch_assoc() on a non-object in C:\[...]\GestionBDMySql.php on line 24


El archivo GestionBDMySql.php es un fichero PHP que contiene, exclusivamente, la definición de una clase con el mismo nombre (GestionBDMySql).
Aquí tenéis el código de dicho script:

<?php
class GestionBDMySql {
private $conexion;
/////////////////
/////////////////
function __get($con) {
return $this->conexion;
}
/////////////////
function conecta() {
$this->conexion = new mysqli("servidor", "usuario", "clave");
$this->conexion->select_db("bd");
}
/////////////////
function desconecta() {
$this->conexion->close();
}
/////////////////
function devuelveNumeroRegistros($registros) {
return $registros->num_rows();
}
/////////////////
function devuelveSiguienteRegistro($registros) {
return $registros->fetch_assoc(); <--- Ésta es la línea 24
}
/////////////////
function ejecutaSQL($cadenaSQL) {
return $this->conexion->query($cadenaSQL);
}
/////////////////
function liberaRegistros($registros) {
$registros->free();
}
}
?>

Supongo, según el mensaje de error, que el intérprete PHP no reconoce a la variable $registros como un conjunto de registros (dicho de otra forma, no lo considera un objeto). En la tabla articulo hay registros, por lo que evitamos un valor NULL. ¿Se os ocurre cuál puede ser el motivo del fallo?

Añadir que el error lo da, como podéis ver, dentro de la función devuelveSiguienteRegistro($registros), con lo que el problema no se encuentra en la falta de reconocimiento del archivo GestionBDMySql.php o del módulo mysqli.dll (por ejemplo, la línea $bd->conecta(); funciona sin problemas).

Muchas gracias por adelantado.
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 13:59.