Php 如何在两个表中洗牌帖子?
我在搞邮政系统。。 所以,我必须显示用户的朋友和用户参与的小组的帖子。。 这是我用来显示帖子的代码Php 如何在两个表中洗牌帖子?,php,mysql,pdo,Php,Mysql,Pdo,我在搞邮政系统。。 所以,我必须显示用户的朋友和用户参与的小组的帖子。。 这是我用来显示帖子的代码 <?php $sql = "SELECT * FROM posts WHERE uploader_id=:friend_id ORDER BY id DESC"; $query = $db->prepare($sql); $query->execute(array( ":friend_id" => $friend_id )); $rows =
<?php
$sql = "SELECT * FROM posts WHERE uploader_id=:friend_id ORDER BY id DESC";
$query = $db->prepare($sql);
$query->execute(array(
":friend_id" => $friend_id
));
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$name = $row['name'];
echo "POST BY $name";
}
$sql = "SELECT * FROM group_posts WHERE id=:member_group ORDER BY id DESC";
$query = $db->prepare($sql);
$query->execute(array(
":member_group" => $group_id
));
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$name = $row['name'];
echo "POST BY $name";
}
?>
现在,我希望所有这些帖子都以一种方式被洗牌,即post表和group_posts表中的所有帖子都以降序显示
更新
我将代码编辑为。。
我想,在编码我的邮政系统之前,我必须先对其进行编码
<?php
$sql = "SELECT * FROM friends WHERE user_one=:me OR user_two=:me2 UNION SELECT * FROM group_members WHERE member_id=:me3";
$query = $db->prepare($sql);
$query->execute(array(
":me" => $my_id,
":me2" => $my_id,
":me3" => $my_id
));
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$user_one = $row['user_one'];
$user_two = $row['user_two'];
$group_id = $row['group_id'];
if ($user_one == $my_id) {
$friend_id = $user_two;
} else {
$friend_id = $user_one;
}
echo $friend_id . "<BR>" . $group_id;
}
?>
现在,问题来了。。
这已成功打印$friend\u id,但在打印$group\u id时显示了未定义的索引“group\u id”。
我已检查所有字段是否正确。尝试使用UNION仅使用一个查询
请注意,您的内部查询必须以相同的顺序返回相同数量的列,并且我认为也必须使用相同的名称/别名。谢谢@Aiias这很有帮助:@user3436939,表friends中的所有列是否也出现在表group_POST中,反之亦然?如果没有,则无法执行SELECT*。您需要限制由UNION分隔的两个查询,以便它们以相同的顺序选择相同的数据。
SELECT *
FROM (
SELECT name, id FROM posts WHERE uploader_id=:friend_id
UNION
SELECT name, id FROM group_posts WHERE id=:member_group
) p
ORDER BY p.id DESC