I am getting an Id from a table, which I need to get a DB record of a news item, so the admin can update it. It gets to the controller just fine, but gives me the error when I try to pass it to the model and do the query.
What really puzzles me is that I have used the exact same structure many times throughout this project and never gotten this error before.
This is the controller:
    include_once'models/Admin_NewsTable.class.php';
    $news = new Admin_NewsTable( $dbh );
    // This one works fine
    $aNews = $news->getAllNews();
    $newsTable = h('');
    foreach($aNews as $news){
        $newsTable .= '<tr>';
        $newsTable .= ' <td>'.$news['title'].'</td>';
        $newsTable .= ' <td>'.substr($news['content'], 0, 50).'</td>';
        $newsTable .= ' <td>'.$news['author_name'].'</td>';
        $newsTable .= ' <td>'.$news['date_created'].'</td>';
        $newsTable .= '<td id="updateNews'.$news["news_id"].'" class="newsUpdateButton updateButton text-center" type="submit" name="updateNews" action="index.php?page=admin-news"><i class="fa fa-pencil-square"></i></td>';
        $newsTable .= '<td id="deleteNews'.$news["news_id"].'" class="newsDeleteButton deleteButton text-center"  data-toggle="modal"><i class="fa fa-minus-circle"></i></td>';
        $newsTable .= '</tr>';
    }
    $view = include_once'views/admin-news-html.php';
    // This one does not work
    if(isset($_POST['updateNews'])){
         $updateId = $_POST['updateNews'];
         // Calling the function in the model
         $news->getNewsPost($updateId);
    }
This is the model:
    class Admin_NewsTable{
    private $dbh;
    // Connect to database
    public function __construct ( $pdo ) {
        $this->dbh = $pdo;
    }
    // This one works fine
    function getAllNews(){
    $sth = $this->dbh->prepare('SELECT news.news_id, news.title, news.content, news.date_created, users.username FROM news INNER JOIN users WHERE users.user_id = news.author_id');
    $sth->execute();
    // Set up an array to hold the individual post as an array
    $newsData = array();
    if($sth){
        while($r=$sth->fetch()){
            // Temp post array
            $tmpNews = array();
            $tmpNews['news_id'] = $r['news_id'];
            $tmpNews['title'] = $r['title'];
            $tmpNews['content'] = $r['content'];
            $tmpNews['date_created'] = $r['date_created'];
            $tmpNews['author_name'] = $r['username'];
            array_push($newsData, $tmpNews);
        }
        return $newsData;
    }
}
    // THis one is the problem
    public function getNewsPost($updateId){
    $sth = $this->dbh->prepare('SELECT news.news_id, news.title, news.content, news.date_created, users.username FROM news INNER JOIN users WHERE users.user_id = news.author_id AND news.news_id = ?');
    $sth->execute(array($updateId));
    if($sth){
        while($r=$sth->fetch()){
            // Temp post array
            $newsPost = array();
            $newsPost['news_id'] = $r['news_id'];
            $newsPost['title'] = $r['title'];
            $newsPost['content'] = $r['content'];
            $newsPost['date_created'] = $r['date_created'];
            $newsPost['author_name'] = $r['username'];
        }
    }
    return $newsPost;
}
It breaks before it even gets to the model, so what am I doing wrong?
I have the same structure for another query using the same controller and model, which works fine, so I am really puzzled...
EDIT: I managed to solve the problem by calling the query function from another controller. I have other controllers, where this structure doesn't cause any problems. Can anyone explain to me why this doesn't work in this particular case?
 
    