Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的GROUPBY子句有什么问题?_Php_Sql - Fatal编程技术网

Php 我的GROUPBY子句有什么问题?

Php 我的GROUPBY子句有什么问题?,php,sql,Php,Sql,很抱歉问这个愚蠢的问题,但我不明白为什么我的数据显示了两次 这是一个非常简单的查询。DB table calendar_px目前只有三行和四个字段,其中一行用于日期,另一行用于年份,另一行包含一些简短内容 因此,如果您访问MySite/Calendar/janu\u 1页面,您应该会看到DB表中具有匹配日期2字段janur\u 1的所有年份和摘要。我的练习表有三行: 1969 | So and so was born. 1969 | A volcano erupted. 1970 | They

很抱歉问这个愚蠢的问题,但我不明白为什么我的数据显示了两次

这是一个非常简单的查询。DB table calendar_px目前只有三行和四个字段,其中一行用于日期,另一行用于年份,另一行包含一些简短内容

因此,如果您访问MySite/Calendar/janu\u 1页面,您应该会看到DB表中具有匹配日期2字段janur\u 1的所有年份和摘要。我的练习表有三行:

1969 | So and so was born.
1969 | A volcano erupted.
1970 | They released a new song.
我的代码完美地显示了信息——只是显示了两次。我已经按每个字段名对其进行了分组,有无Cal2。扩展,什么都不起作用。看起来我一定犯了一个很简单的错误,但我不明白

这是我的疑问

    $stm = $pdo->prepare("SELECT Cal2.N, Cal2.Date2, Cal2.Year, Cal2.Brief
        FROM calendar_px Cal2
        WHERE Cal2.Date2 = :MyURL
        GROUP BY Cal2.Brief");
    $stm->execute(array(
        'MyURL'=>$MyURL
    ));

    break;
}

while ($row = $stm->fetch())
{
    $Year = $row['Year'];
    $Brief[] = ''.$Year.' – '.$row['Brief'].'';
}
这是我在展示页面上看到的

echo join( $Brief, '<br>' );
试试这个:

$rows= $stm->fetchAll();
while ($rows as $row)
{
    $Year = $row['Year'];
    $Brief[] = ''.$Year.' &#8211; '.$row['Brief'].'';
}

哎呀,我知道我做了傻事,我终于明白了。不知何故,我将该文件与查询一起包含了两次。我必须记住使用require_一次,而不是简单的require。请删除这个帖子,除非你认为任何人都可以从中学习

你想用GROUPBY子句实现什么?@Aidan-我不希望三行的序列显示两次;我只希望每行显示一次。我认为分组条款是实现这一点的方法,尽管可能还有其他我不知道的解决方案。我想我不明白。您能否将当前输出附加到您的问题中?如果您只希望每行打印一次,则不需要GROUP BY子句。好的,这是我不带GROUP BY子句的查询$stm=$pdo->prepareSELECT Cal2.N,Cal2.Date2,Cal2.Year,Cal2.Brief FROM calendar_px Cal2,其中Cal2.Date2=:MyURL$stm->executearray'MyURL'=>$MyURL;但一切都没有改变;它仍然正确地显示所有三行,但是第二次显示所有三行。我不认为你的SQL是个问题,我试过了,但是我在第二行遇到了一个语法错误——虽然$rows作为$row我一直在使用它,但我还没有找出是什么导致了这个错误。