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 »</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 »</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