php - 如何使用 php 和 html 在我的博客上显示两个 sql 表的信息

标签 php html mysql sql

我正在尝试在我的网络博客上显示 SQL 表中的信息。我有两个表 blog_posts 和 blog_members 看起来像

Blog_members
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| memberID | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(255)     | YES  |     | NULL    |                |
| password | varchar(255)     | YES  |     | NULL    |                |
| email    | varchar(255)     | YES  |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+

 blog_posts
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| postID    | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| postTitle | varchar(255)     | YES  |     | NULL    |                |
| postDesc  | text             | YES  |     | NULL    |                |
| postCont  | text             | YES  |     | NULL    |                |
| postDate  | datetime         | YES  |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+

我可以从一个表中添加信息,但我想在发布一篇文章时显示 memeberID,我是否需要在 blog_posts 表中添加其他列,如果是的话,我将如何解决这个问题,我是否需要使用联接?

我使用下面的 PHP 在我的博客上显示信息。

$stmt = $db->query('SELECT postID, postTitle, postDesc, postDate FROM blog_posts ORDER BY postID DESC');
            // $stmt = $db->query('SELECT memberID FROM blog_members');
            while($row = $stmt->fetch()){

                echo '<div>';
                    echo '<h1><a href="viewpost.php?id='.$row['postID'].'">'.$row['postTitle'].'</a></h1>';
                    echo '<p>Posted on '.date('jS M Y H:i:s', strtotime($row['postDate'])).'</p>';
                    // echo '<p> by'.$row['memberID'].'</p>';
                    echo '<p>'.$row['postDesc'].'</p>';             
                    echo '<p1><a href="viewpost.php?id='.$row['postID'].'">Read More</a></p1>';             
                echo '</div>';
                echo '<hr />';

显示帖子但不显示成员(member) ID 我希望帖子也包含创建它的成员(member)。

最佳答案

考虑您的 posts 表中的一行。您如何知道该行属于哪个成员?正如评论中提到的,您可以将 memberId 添加到您的 posts 表中,以便您可以连接两个表并查找属于某个帖子的成员以及特定成员的帖子。这些列的一种约定是在它们前面添加诸如 fk(外键)之类的前缀,以指示它们在表中的角色。该表可能如下所示:

+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| postID      | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| postTitle   | varchar(255)     | YES  |     | NULL    |                |
| postDesc    | text             | YES  |     | NULL    |                |
| postCont    | text             | YES  |     | NULL    |                |
| postDate    | datetime         | YES  |     | NULL    |                |
| fkMemberID  | int(11) unsigned | NO   |     | NULL    |                |  
+-------------+------------------+------+-----+---------+----------------+

检索帖子后,您将获得该帖子所有者的memberId,并且可以使用该 ID 检索成员(member)详细信息。

(您还可以在数据库中创建一个单独的外键对象,以维护外键列的完整性。即,它确保您不会将例如 53 的 memberId 放入 posts 表 fkMemberId 列中,除非有成员表中的 memberId 为 53。您可能已经知道这一点,但只是想提一下。:) )

关于php - 如何使用 php 和 html 在我的博客上显示两个 sql 表的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55650353/

相关文章:

php - 使用 Symfony 2 在 Twig 模板中获取内核根目录

php - Laravel 5 更新所有 Pivot 条目

php - 统计今天、本周、上个月和总访问量[MySQL查询]

javascript - jQuery 移动解剖与全尺寸混合?

PHP/MYSQL : What's Wrong With My Query/PHP variable in query

php - 如果语句条件未运行

java - 如何处理url中的特殊字符作为参数值?

javascript - 新建div添加类名并修改样式

php - 使用关系数据库 (mySQL) 的用户可扩展实体的方法

mysql - 从具有 "and"条件和 MIN() 函数的两个表中选择