2015-10-22 5 views
-1

У меня есть класс, называемый ПОСТЫ и вот код:цикл по методу класса ООП + PDO

<?php 
// This is a class file: 
     class POSTS { 
      private $connection; 
      public $title; 
      public $details; 

      // This connection coming from another PDO file. 
      function __construct($dbConn) { 
       $this->connection = $dbConn; 
      } 

      public function getRealtedPosts($section_name) { 
       $stm = $this->connection->prepare("SELECT * FROM posts WHERE section_name !=:Section_name"); 
       $stm->bindParam(":Section_name", $section_name); 
       $stm->execute(); 

       $results = $stm->fetch(PDO::FETCH_OBJ); 
       $this->title = $results->title; 
       $this->details = $results->details; 
      } 
     } 

     // Here the Index File: 
     // I already Initiated the class and connection by 
     // required the PDO file. 

     $section_name = 'PHP'; 

     while ($POSTS->getRealtedPosts($section_name)) { 
      $post_title = $POSTS->title; 
      $post_details = $POSTS->details; 
     ?> 
      <div class="post"> 
       <h1><?php echo $post_title;?></h1> 
       <p><?php echo $post_details;?></p> 
      </div> 
     <?php 
     } 
?> 

К сожалению, выход ничего :(Но если я удалил петлю, пока появилась только одна строка . Кроме того, я попытался сделать петлю в моем файле класса, но он не работает

Помогите пожалуйста

+0

Вы ищете не равно это правильно? Вам даже не нужно оценивать свой объект таким образом, просто используйте PDO :: FETCH_CLASS, «POSTS» –

+0

да, что я ищу –

+0

Можете ли вы добавить вывод print_r объекта $ post? –

ответ

1

Это только выбирает одну строку:..

$results = $stm->fetch(PDO::FETCH_OBJ); 

Просто замените его:

$results = $stm->fetchAll(PDO::FETCH_OBJ); 

Конечно же, вы должны хранить все результаты где-то, в настоящее время только вы хранить название и подробности одной строки в вашем классе.

Полный пример:

class POSTS { 

    // the rest of your class 

    public function getRealtedPosts($section_name) { 
     $stm = $this->connection->prepare("SELECT * FROM posts WHERE section_name !=:Section_name"); 
     $stm->bindParam(":Section_name", $section_name); 
     $stm->execute(); 

     return $stm->fetchAll(PDO::FETCH_OBJ); 
    } 
} 

Затем в файле индекса:

$results = $POSTS->getRealtedPosts($section_name); 
foreach ($results as $post) { 
?> 
    <div class="post"> 
     <h1><?php echo $post->title;?></h1> 
     <p><?php echo $post->details;?></p> 
    </div> 
<?php 
} 
+0

Это сделало ошибку: _Trying для получения свойства non-object_ –

+0

Я расширил пример –

+0

Спасибо, что отлично сработал. –