"Trying to get Property of Non-Object" - Understanding the Issue
The error "Trying to get property of non-object" typically occurs when you attempt to access a property of an object that does not exist. In your case, this issue arises in the code below:
<?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); ?>
When you execute this code, the issue lies in the use of mysql_fetch_object(). This function returns an object representation of a single row in the sidemenu table, but you are attempting to iterate over it as an array of objects in your view page:
<?php foreach ($sidemenus as $sidemenu): ?> <?php echo $sidemenu->mname."<br />"; ?> <?php endforeach; ?>
Resolving the Problem
To fix this error, you need to retrieve all the rows you require from the table and store them in an array. You can achieve this by using a while loop to iterate over the results and populate an array with the relevant objects:
$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; }
By using this array of objects in your view page, you can iterate over it and access the properties of each object:
<?php foreach ($sidemenus as $sidemenu): ?> <?php echo $sidemenu->mname."<br />"; ?> <?php endforeach; ?>
Alternative Approach with PDO
Another option for handling this situation is to use PHP's PDO extension, which provides more modern and object-oriented database interaction. Using PDO, you can fetch all the rows from the sidemenu table and store them in an array as follows:
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password'); $stmt = $pdo->prepare("SELECT * FROM sidemenu WHERE `menu_id`=:menu_id ORDER BY `id` ASC LIMIT 1"); $stmt->execute([':menu_id' => $menu]); $sidemenus = $stmt->fetchAll(PDO::FETCH_OBJ);
In this code:
You can then use this array of objects in your view page, similar to the method described earlier.
The above is the detailed content of Why Am I Getting a 'Trying to get property of non-object' Error in PHP?. For more information, please follow other related articles on the PHP Chinese website!