duangelin7513
duangelin7513
2018-10-03 10:18

将PDO对象结果操作到模板中

I'm making a news page that will update everytime an admin adds a row into the 'news' table. The rows are as follows:

ID, POSTTITLE, POSTDATE, POSTAUTHOR, MESSAGE

I have created a foreach loop that takes all of the data retrieved from that table and takes the data from the nested array:

<?php

$pdo->beginTransaction();
$query = $pdo->prepare("SELECT * FROM news");
$query->execute();
$results = $query->fetchAll(PDO::FETCH_OBJ);


foreach($results as $row) {
    foreach($row as $key => $value) {
        dump( $key . " = " . $value);
    }
}

$pdo->commit();
?>

This outputs this data:
(Which is all of the data inside of the table)

"id = 1"
"posttitle = Welcome To Universal Link Media Group"
"postdate = 2018-10-02"
"postauthor = Ethan (Super Administrator)"
"message = Dummy Text. "

Now here's my question. I want to create a template for each post. So they are uniform. Each post will have a 'title' field, a 'date' field, a 'author' field ect... and I want to put the values from the table into the fields.

It will look something like this:

TITLE: $posttitle
AUTHOR: $postauthor
DATE CREATED: $postdate
MESSAGE: $message

And I'd like it to be dynamic, so it doesn't matter how many rows are in the table, there will always be a template post with the posts data inside of it.

Any help would be greatly appreciated, been stuck on this issue for quite a while.

Thanks!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • duancong2965 duancong2965 3年前

    To get your desired output you just need to change your loop to this:

    foreach($results as $row) {
      echo 'TITLE: ' . $row->posttitle . '<br>';
      echo 'AUTHOR: ' . $row->postauthor . '<br>';
      echo 'DATE CREATED: ' . $row->postdate . '<br>';
      echo 'MESSAGE: ' . $row->message . '<br>';
    }
    

    If you really want to make Templates, you should take a look at some templating-languages like Twig. https://twig.symfony.com/

    点赞 评论 复制链接分享

为你推荐