2012-03-13 2 views
-1
class getPosts 
    { 
     public $post_id; 
     public $title; 
     public $content; 
     public $author; 

function __construct($inPost_id=null, $inTitle=null, $inContent=null, $inAuthor=null) 
    { 

$this->post_id = $inPost_id; 
$this->title = $inTitle; 
$this->content = $inContent; 
$this->author = $inAuthor; 


    } 
     function getPosts() 
     { 
      $postnumber = 14; 
      $query = $dbh->prepare("SELECT * FROM posts ORDER BY ID DESC LIMIT $postnumber"); 
      $query->execute(); 
      $postArray = array(); 
      while ($row = $query->fetch()) 
      { 
       $myPost = new getPosts($row["id"], 
        $row['title'], $row['content'], 
        $row['author'], $row["author_id"]); 
       array_push($postArray, $myPost); 
      } 
      return $postArray; 
     } 
    } 

Это работает, но не так хорошо, так как вместо 14 он возвращает 15.запрос возвращает 1 слишком много строк

ли это хорошо использовать PDO::FETCH_ASSOC в fetch()?

+0

Что содержит пятнадцатый ряд? Данные? Или просто пробелы? – Jon

+0

15 сообщений извлекаются вместо 14 – Ben

+0

Вы можете просто установить 'LIMIT' в' $ postnumber-1' ... Плохое решение, но оно должно работать ... – Jon

ответ

1

При использовании подготовленных заявлений вы должны связать любые параметры:

$postnumber = 14; 
$query = $dbh->prepare("SELECT * FROM posts ORDER BY ID DESC LIMIT :postnumber"); 
$query->bindParam(':postnumber', $postnumber, PDO::PARAM_INT); 
$query->execute(); 
+0

Почему я должен использовать здесь, так как я знаю, что $ postnumber is.I использовать его для ввода пользователем, но почему здесь? – Ben

+0

Если вы используете его здесь, он исправит вашу проблему? – TheOx

+0

нет снова такого же результата – Ben

Смежные вопросы