Php MySQL Desc Limit不限制返回?

Php MySQL Desc Limit不限制返回?,php,mysql,Php,Mysql,我正在一个“集体帖子”页面上工作,你的所有朋友的帖子都会出现在这个页面上。我说的不是$\u POST,而是facebook上的状态更新之类的帖子。我的代码运行了一些什么,但唯一的问题是它返回了三个以上的结果,我不知道为什么。我环顾了一下四周,但一点运气都没有 守则: $my_id = $_SESSION['user_id']; $frnd_query = mysql_query("SELECT user_one, user_two FROM friends WHE

我正在一个“集体帖子”页面上工作,你的所有朋友的帖子都会出现在这个页面上。我说的不是
$\u POST
,而是facebook上的状态更新之类的帖子。我的代码运行了一些什么,但唯一的问题是它返回了三个以上的结果,我不知道为什么。我环顾了一下四周,但一点运气都没有

守则:
        $my_id = $_SESSION['user_id'];
        $frnd_query = mysql_query("SELECT user_one, user_two FROM friends WHERE user_one='$my_id' OR user_two='$my_id'");
        while($run_frnd = mysql_fetch_array($frnd_query)) {
            $user_one = $run_frnd['user_one'];
            $user_two = $run_frnd['user_two'];
            if($user_one == $my_id){
                $user = $user_two;
            } else {
                $user = $user_one;
            }



              $res=mysql_query("SELECT * FROM posts WHERE user_id=$user ORDER BY timestamp DESC LIMIT 0, 3");

              while($row=mysql_fetch_assoc($res)) {
                ?>
                    <div class="span4">
                      <h3><a href="<?php echo username_from_user_id($user); ?>"><?php echo first_name_from_user_id($user), ' ', last_name_from_user_id($user) ?></a></h3>
                       <h8><?php echo date('F j, Y', strtotime($row['timestamp'])) ,' at ', date('h:i A', strtotime($row['timestamp'])); ?></h8>
                      <p><?php echo $row['content']; ?></p>
                      <p><a class="btn" href="#">View Reactions &raquo;</a></p>
                    </div><!--/span-->

                <?php
              }



        }//While Run_frnd

        ?>
$my\u id=$\u会话['user\u id'];
$frnd_query=mysql_query(“从朋友中选择用户_one、用户_two,其中用户_one='$my_id'或用户_two='$my_id');
while($run\u frnd=mysql\u fetch\u数组($frnd\u query)){
$user\u one=$run\u frnd['user\u one'];
$user\u two=$run\u frnd['user\u two'];
如果($user\u one==$my\u id){
$user=$user\u二;
}否则{
$user=$user\u one;
}
$res=mysql_query(“从帖子中选择*,其中user_id=$user ORDER BY timestamp DESC LIMIT 0,3”);
while($row=mysql\u fetch\u assoc($res)){
?>

我尝试了多种方法,但都没有成功。另外,当涉及到新的PDO时,我应该怎么做?

此查询:

mysql_query("SELECT * FROM posts WHERE user_id=$user ORDER BY timestamp DESC LIMIT 0, 3")
正在该
循环中运行,而
循环:

while($run_frnd = mysql_fetch_array($frnd_query)) {
因此,每个朋友最多可以得到3个结果,而不是总共3个

您可以通过以下方式来解决此问题:

$res=mysql_query("SELECT * FROM posts WHERE user_id=$user ORDER BY timestamp DESC LIMIT 0, 3");

while($row=mysql_fetch_assoc($res)) {

  $i = !isset($i) ? 1 : $i + 1;

    ?>
                <div class="span4">
                  <h3><a href="<?php echo username_from_user_id($user); ?>"><?php echo first_name_from_user_id($user), ' ', last_name_from_user_id($user) ?></a></h3>
                   <h8><?php echo date('F j, Y', strtotime($row['timestamp'])) ,' at ', date('h:i A', strtotime($row['timestamp'])); ?></h8>
                  <p><?php echo $row['content']; ?></p>
                  <p><a class="btn" href="#">View Reactions &raquo;</a></p>
                </div><!--/span-->

    <?php

  if (3 == $i)
  {
    break 2;
  }  

}
$res=mysql\u query(“从帖子中选择*,其中user\u id=$user ORDER BY timestamp DESC LIMIT 0,3”);
while($row=mysql\u fetch\u assoc($res)){
$i=!isset($i)?1:$i+1;
?>


请看我的

啊,这很有意义。有没有办法将其限制为总共3个?使用一个连接的查询,而不是嵌套的循环。你能给我一个例子吗?我不确定我是否遵循?这似乎可行,但如何显示接下来的3个结果,我必须是一个新的
while()
由于输出区域的样式,您刚才说您希望将其限制为3个结果。现在是6个吗?
post p
是什么意思,如果它是posts中的
,当我开始编写查询时,我想我可能会使用ON子句而不是使用,所以我给了它一个简短的别名。如果您愿意,您可以省略它。这似乎是正确的工作,但它只显示来自一个朋友的结果?我如何显示来自我朋友的3篇最新帖子这将显示来自所有朋友的3篇最新帖子。如果它只显示一个朋友,他发布了所有3篇最新帖子。是的,出于某种原因,它显示了最后3篇帖子,但只显示了来自用户的帖子,就像显示帖子一样来自用户2和3,但名字和姓氏与用户3的名字相同?
SELECT *
FROM posts p
JOIN (SELECT user_one AS user_id
      FROM friends
      WHERE user_two = '$my_id'
      UNION DISTINCT
      SELECT user_two AS user_id
      FROM friends
      WHERE user_one = '$my_id') u
USING (user_id)
ORDER BY timestamp DESC
LIMIT 3