Tratando de obtener la propiedad de non-object en [duplicate]


Esta pregunta ya tiene una respuesta aquí:

En la página de Control:

<?php
  include 'pages/db.php'; 
  $results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
  $sidemenus = mysql_fetch_object($results);
?>

En la Página de la vista:

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

El error es:

Aviso: Tratando de obtener la propiedad de non-object en C:\wamp\www\phone\pages\init.php en línea 22

¿Puedes arreglarlo? Yo no tienes idea de lo que pasó.

Author: Nikola K., 2011-05-05

4 answers

Compruebe el manual para mysql_fetch_object(). Devuelve un objeto, no una matriz de objetos.

Supongo que quieres algo como esto

$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;
}

Le sugiero que eche un vistazo a la DOP. PDOStatement::fetchAll(PDO::FETCH_OBJ) hace lo que asumiste mysql_fetch_object() hacer

 28
Author: Phil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-05 02:13:28

Tu error

Aviso: Tratando de obtener la propiedad de non-object en C:\wamp\www\phone\pages\init.php en línea 22

Su comentario

@22 es <?php echo $sidemenu->mname."<br />";?>

$sidemenu no es un objeto, y usted está tratando de acceder a una de sus propiedades.

Esa es la razón de tu error.

 13
Author: alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-05 02:13:28
<?php foreach ($sidemenus->mname as $sidemenu): ?>
<?php echo $sidemenu ."<br />";?>

O

$sidemenus = mysql_fetch_array($results);

Entonces

<?php echo $sidemenu['mname']."<br />";?>
 5
Author: Jamie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-05 02:14:46

$sidemenu no es un object, por lo que no puede llamar a métodos en él. Probablemente no está siendo enviado a su view, o $sidemenus está vacío.

 4
Author: james,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-23 06:26:26