繁体   English   中英

PHP MySQL从连接表打印用户字段

[英]PHP MySQL Printing User Field from Joined Table

我几乎有这个,但无法弄清楚最后一步! 从两个表中我将post_idusername进行了匹配,所以现在我只想在帖子标题下打印用户名,下面是循环。 $joined查询生成下表...但是如何将特定用户与帖子匹配? 如果需要进一步澄清,请与我们联系

function get_joined()
{
    $sql = "SELECT `posts`.`post_id` AS `post_id`, 
        `posts`.`post_date` AS `post_date`, 
        `posts`.`post_title` AS `post_title`, 
        `posts`.`post_body` AS `post_body`,
        `users`.`id` AS `user_id`, 
        `users`.`username` AS `user_name`
 FROM `posts`
LEFT JOIN `users` ON `users`.`id` = `posts`.`user_id`
ORDER BY `post_date` DESC"; 
$joined = mysql_query($sql);

return $joined;
}

打印帖子,我的问题是<?php echo $joined['username']; ?> <?php echo $joined['username']; ?>

<?php

    $posts = get_posts();
    foreach($posts as $post)
    {
        ?>

    <h2><a href ="blog_read.php?pid=<?php echo $post['id']; ?>"><?php echo   $post['title']; ?></a></h2>
    <h4>By <font color="#FF6347"><?php echo $posts['user_name']; ?></a></font> on <?php echo $post['date']; ?></h4> 
    <h4><?php echo $post['total_comments']; ?> comments, last comment <?php echo $post['last_comment']; ?>
    <hr />

    <p><?php echo $post['preview']; ?>...</p>
    <?php

}

?>

用户表:
id|username
1 | steve
2 | jon
3 | mike 3 | mike

帖子表:
post_id|post_user|post_tite|post_body|post_date
1 | steve 1 | steve title body date
2 | steve 2 | steve title body date
3 | steve 3 | steve title body date
等等

您的get_posts函数应该将用户名加入$posts ,可能是通过SQL JOIN加入......否则,您的索引将不正确,并且您将在不属于那里的帖子上显示用户名(订单将是错误的) 。

一个示例SQL:

SELECT
  posts.id AS post_id,
  posts.date AS post_date,
  posts.title AS post_title,
  posts.content AS post_content,
  users.id AS user_id,
  users.username AS user_name
FROM
  posts
LEFT JOIN
  users ON users.id = posts.user_id
ORDER BY
  post_date DESC # newest first

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM