allora perché qua con una query più complessa, mi funziona?

Codice PHP:
try {


    $query = "SELECT users.username as _username , post_categories.title as _title , post.*, DATE_FORMAT(post.data_reg,'%d/%M/%Y ore %H:%i') as 'data_it' FROM users 
       INNER JOIN post 
          ON users.id = post.id_users INNER JOIN post_categories
          ON post_categories.id = post.id_categories WHERE post.active=1 and post.id='".$id."'";
    $stmt = $db->prepare( $query );
    
    
    $stmt->bindParam(':id', $_GET['id'], PDO::PARAM_INT);
    $stmt->execute();
    $row = $stmt->fetch();
    if($row > 0)
    {
    
        $id = $row['id'];
        $content = $row["content"];
        $title = "Post : ".$row["title"];
        $layout->setTitle($title);
        $layout->startBody();
        ?>
          <div class="post">
           <div class="title">
         <h2><?php echo $row["title"]; ?></h2>
         <p><small>Postato <?php echo $row["data_it"]; ?> by <?php echo $row["_username"]; ?></small></p>
         </div>
         <hr style="background-color:#ffbf18;height:5px;">
         <div class="entry">
        <?php echo bbcode_complete($row['content']); ?>
         </div>


         </div>
        <?php
        $layout
->endBody();    
        
    }else
    {
        
$err_title "Error : 404 - Pagina Non trovata";
        
$layout->setTitle($err_title);
        
$layout->startBody();
        echo 
'<h2 align="center">Error : 404 - Pagina Non trovata</h2>';
        
$layout->endBody();
    }


    }catch(
PDOException $exception){ //to handle error
    
echo "Error: " $exception->getMessage();
}

Come mai?

idea?

grazie mille.