Php 查询所有项目并忽略if条件
我目前有两个功能,对我的数据库执行查询;第一个对所有我的条目执行查询,第二个有一个规范(用于版本控制) 数据库->已编辑 代码->已编辑 为了显示我的条目,我尝试了以下操作,如预期的那样,为我提供了所有条目:Php 查询所有项目并忽略if条件,php,mysql,foreach,Php,Mysql,Foreach,我目前有两个功能,对我的数据库执行查询;第一个对所有我的条目执行查询,第二个有一个规范(用于版本控制) 数据库->已编辑 代码->已编辑 为了显示我的条目,我尝试了以下操作,如预期的那样,为我提供了所有条目: $posts_array = $query->post($post); foreach ( $counted_versions as $post ) { echo $post->id . "-"; } 但是,我只想回显第2行和第4行,因为第2行是唯一的,第4行是最近的
$posts_array = $query->post($post);
foreach ( $counted_versions as $post )
{
echo $post->id . "-";
}
但是,我只想回显第2行和第4行,因为第2行是唯一的,第4行是最近的
起初,我认为这个逻辑会起作用:
$posts_array = $query->post($post);
$counted_versions = $query->version_count();
foreach ( $counted_versions as $counted )
{
foreach ( $posts_array as $post )
{
echo $post->id . "-";
}
}
相反,我得到的是1-2-3-4-
,如果我切换foreach循环,我得到的是4-4-4-
,而我期望的是2-4
,或者至少是1-4
(或者4-2
或者4-1
)
任何人都有办法得到类似的结果吗?如果您想要每个
帖子id
的最高id,请使用以下查询:
SELECT post_id, MAX(id) max_id
FROM news
GROUP BY post_id
什么是post\u id
?您的表只有id
和version\u id
列。您对代码的描述与代码完全不匹配。第一个查询不会返回所有条目,它只返回id为$postid的条目。第二个循环应该只返回一行,因为限制1
。为什么要编写嵌套循环?外部循环迭代行,内部循环迭代行中的列;但是,我仍然想知道如何循环查看每个post\u id
,找到id
的最高值,并确保只显示最高的id
值。这听起来更清楚了吗?因此,通过这种方法,我现在有了新闻组中的$query=“SELECT id,post\u id,version\u id,MAX(version\u id)MAX\u version\u id,按MAX\u version\u id DESC的post\u id顺序”
和我的foreach调用$version->version\u id
,但我没有version\u id
的最高值,因此,我有1
。知道为什么吗?当您在查询中包含非聚合列时,它会从组中的随机行中获取它们,而不一定是包含MAX(version\u id)
的行。如果要获取与max相关联的列,需要将原始表与获取max的子查询连接起来。我的foreach循环如下:foreach($version\u数组为$version){$id=$version->id;$newest=$version->version\u id;echo$id./“$newst.
”;}
如果您想知道每个帖子ID的最大版本ID,请使用$version->max\u version\u ID,而不是$version->version\u ID`……我又想过头了。万分感谢!
$posts_array = $query->post($post);
$counted_versions = $query->version_count();
foreach ( $counted_versions as $counted )
{
foreach ( $posts_array as $post )
{
echo $post->id . "-";
}
}
SELECT post_id, MAX(id) max_id
FROM news
GROUP BY post_id