"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué aparece el error "Intentando obtener propiedad de no objeto" al acceder a los resultados de la base de datos?

¿Por qué aparece el error "Intentando obtener propiedad de no objeto" al acceder a los resultados de la base de datos?

Publicado el 2024-11-18
Navegar:123

Why am I getting the

Intentando acceder a la propiedad de un objeto que no es un objeto

Al intentar recuperar datos de una base de datos, aparece el error "Intentando obtener la propiedad del no objeto." Este error ocurre cuando intentas acceder a una propiedad de un objeto nulo o inexistente.

En tu escenario específico, tienes el siguiente código en tu página de Control:

$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
$sidemenus = mysql_fetch_object($results);

Y en su página Ver:

foreach ($sidemenus as $sidemenu): 
  echo $sidemenu->mname."<br />";
endforeach; 

El error se origina porque mysql_fetch_object() devuelve un objeto, no una matriz de objetos. Por lo tanto, en la página Ver, intenta iterar sobre un objeto no iterable, lo que genera el error.

Solución:

Para resolver el problema, debería:

  • Convertir el resultado en una matriz:
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);

$sidemenus = array();
while ($sidemenu = mysql_fetch_object($results)) {
    $sidemenus[] = $sidemenu;
}

Esto convertirá los resultados en una matriz de objetos, que luego podrá iterar en su página Ver.

  • Usar PDO:

PDO proporciona una forma más moderna y eficiente de interactuar con bases de datos. PDOStatement::fetchAll(PDO::FETCH_OBJ) devuelve una matriz de objetos, similar a la funcionalidad que esperaba de mysql_fetch_object().

$stmt = $con->prepare("SELECT * FROM sidemenu WHERE `menu_id` = :menu_id ORDER BY `id` ASC LIMIT 1");
$stmt->bindParam(':menu_id', $menu);
$stmt->execute();

$sidemenus = $stmt->fetchAll(PDO::FETCH_OBJ);

Al utilizar cualquiera de estas soluciones, puede recuperar los datos de la base de datos y evitar el error "Intentando obtener la propiedad de un no objeto. "

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3