web-dev-qa-db-fra.com

Essayer d'obtenir la propriété de non-objet dans

sur la page de contrôle:

<?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);
?>

sur la page d'affichage:

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

L'erreur est:

Avis: Essayer d'obtenir la propriété de non-objet dans C:\wamp\www\phone\pages\init.php à la ligne 22

Peux-tu le réparer? Je n'ai aucune idée de ce qui s'est passé.

36
Gereltod

Consultez le manuel pour mysql_fetch_object() . Il retourne un objet, pas un tableau d'objets.

Je suppose que tu veux quelque chose comme ç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;
}

Puis-je vous suggérer de jeter un coup d'œil à PDO PDOStatement::fetchAll(PDO::FETCH_OBJ) fait ce que vous supposiez mysql_fetch_object() faire

30
Phil

Votre erreur

Avis: Essayer d'obtenir la propriété de non-objet dans C:\wamp\www\phone\pages\init.php à la ligne 22

Votre commentaire

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

$sidemenu _ n'est pas un objet et vous essayez d'accéder à l'une de ses propriétés.

C'est la raison de votre erreur.

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

ou

$sidemenus = mysql_fetch_array($results);

ensuite

<?php echo $sidemenu['mname']."<br />";?>
5
Jamie

$sidemenu n'est pas un object, vous ne pouvez donc pas appeler de méthodes dessus. Il n’est probablement pas envoyé à votre view, ni à $sidemenus est vide.

4
james