我希望我制定了我的头衔。我想了解如何将2个数组合并为1个数组。
我想做的简单例子:
我有2个数据库表,例如blog_posts和用户。
我想从blog_posts和foreach帖子中选择数据,我想为“ add by”选择信息,例如用户名,user_image等。
通过echo,我设法只显示了<?php echo $user['username']; ?>
和<?php echo $blog['title']; ?>
我想返回那些值,就像在mvc模式中一样。我是如何从不同的主题中进行阅读的,我必须将数据存储到数组中,然后将它们返回,使用一个数组没有问题,但是我不知道如何将它们都返回。
public function getBlogPostList(){
try{
$sortby = "SELECT * FROM blog_posts";
$stmt = $this->connCommunity->prepare("$sortby");
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $post){
$addedby = $post['addedby'];
$stmt2 = $this->connUsers->prepare("SELECT * FROM users WHERE id=('$addedby')");
$stmt2->execute();
$result2 = $stmt2->fetchAll();
$blog_post = array();
foreach($result as $post) {
$blog_post[] = $post;
}
foreach($result2 as $user) {
array_merge($blog_post, $user);
}
}
return $blog_post;
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
并显示如下数组:
<?php
foreach ($BlogModel as $BlogModel)
{
echo '<tr><td><a href="index.php?id='.$BlogModel['id'].'">'.$BlogModel['id'].'</a></td><td>'.$BlogModel['title'].'</td><td>'.$BlogModel['username'].'</td></tr>';
}
?>
答案 0 :(得分:0)
首先从一个简单的查询开始,完成所有工作。
此查询示例假定blog_posts表中具有userId的列为user_id,将其替换为正确的列。用正确的数据库名称替换示例数据库名称communitydb
和usersdb
。
$sortby = "SELECT * FROM communitydb.blog_posts p LEFT JOIN usersdb.users u ON u.id = p.user_id";
此后,您只需要返回第一个$ stmt-> fetchAll();即可。到此为止。因此,您的函数getBlogPostList()中的许多代码都是不必要的。
通过循环,您可以循环浏览结果。联接表时,可能是您重复的列名,如果是这种情况,您还应该定义要从用户表中获取的列。例如u.id as userid