php - 遍历两个数据库表

标签 php mysql

在我的数据库中,我有像postuser 这样的表。我希望能够显示谁发布了哪些帖子。

我使用了以下 foreach 循环。我想要实现的是有另一个 foreach 循环,这样我就可以为 user 循环,或者有其他方法可以做到这一点吗?

后表

+--------------+--------------------+-------------------+-------------------
| post_id      | user_id            | title             | time             |
+--------------+--------------------+-------------------+-------------------
| 1            | 2                  | Good service      | 12:00PM          |
+--------------+--------------------+-------------------+-------------------
| 2            | 3                  | Thank you         | 2:46PM           |
+--------------+--------------------+-------------------+-------------------
| 3            | 1                  | Enquiry           | 11:28AM          |
+--------------+--------------------+-------------------+-------------------

用户表

+--------------+--------------------+-------------------+
| user_id      | name               | email             |
+--------------+--------------------+-------------------+
| 1            | Jane               | jane@gmail.com    |
+--------------+--------------------+-------------------+
| 2            | Ben                | ben@gmail.com     |
+--------------+--------------------+-------------------+
| 3            | John               | john@gmail.com    |
+--------------+--------------------+-------------------+


$sql = "SELECT * FROM post p inner join user u ";
                    $sql .= "ON p.user_id = u.user_id ";
                    $sql .= "LIMIT {$per_page} ";
                    $sql .= "OFFSET {$pagination->offset()}";
                    $posts = post::find_by_sql($sql);

foreach ($posts as $post) {    
  echo "<div class='panel-body'>" .
  "<div class='post'>" .
  "<h3>";
  echo $post->title;
  echo "</h3>";
  echo "<p><span class='name'>" . $post->name . " - " . $post->time . "</span>";
  //the rest are the continuation of the html and php codes for looping `$post`
}

name 取自 user 表,而其他变量取自 post 表。

错误:注意:未定义属性:post::$name

虽然我在post表中没有name,但我已经将两个表连接在一起了吗?

最佳答案

$sql = "SELECT * FROM post p inner join user u ";
  $sql .= "ON p.user_id = u.user_id ";
  $sql .= "LIMIT {$per_page} ";
  $sql .= "OFFSET {$pagination->offset()}";
  $posts = post::find_by_sql($sql);

foreach ($posts as $jp) {
  $user = User::find_by_id($jp->user_id);   //add this
  echo "<div class='panel-body'>" .
  "<div class='post'>" .
  "<h3>";
  echo $jp->title;
  echo "</h3>";
  echo "<p><span class='name'>" . $user->name . " - " . $jp->time . "</span>";
  //the rest are the continuation of the html and php codes for looping `$post`
}                      

关于php - 遍历两个数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31690282/

相关文章:

php - 多种形式和一个 PHP 接收器

php - 如果购物车有特定产品,则更改结帐 "Place Order"文本

PHP:在 Composer 包中使用 Phing 任务

mysql - Spring 集成 : error while inseting records in database with jdbc outbound gateway

c# - Gridview 更新问题 - .NET

php - 包含的文件和数据库连接

php - Laravel 属于为可执行查询添加双引号

php - 如何将 api 请求计数存储到 PHP 脚本中以便快速回复客户端?

php - Google Api获取用户的电子邮件地址

php - 调用未定义的方法 - Thumbsup