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:
$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.
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. "
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