Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 使用循环仅显示一次每个不同的字段值_Php_Mysql_Loops_For Loop_Foreach - Fatal编程技术网

Php 使用循环仅显示一次每个不同的字段值

Php 使用循环仅显示一次每个不同的字段值,php,mysql,loops,for-loop,foreach,Php,Mysql,Loops,For Loop,Foreach,这个foreach()循环 SELECT listTitle, listLength, listCmt, listDt, mBCFName, mBCLName, moAmt, moDtOff FROM User U, Listing L, Merchant M, MerchantOffer MO WHERE U.uID = L.uID and L.listID = MO.listID and M.mID = MO.mId ORDER BY listDt DESC; $result=$sth->

这个foreach()循环

SELECT listTitle, listLength, listCmt, listDt, mBCFName, mBCLName, moAmt, moDtOff
FROM User U, Listing L, Merchant M, MerchantOffer MO
WHERE U.uID = L.uID
and L.listID = MO.listID
and M.mID = MO.mId
ORDER BY listDt DESC;
$result=$sth->fetchAll(PDO::FETCH_ASSOC);
foreach($结果为$行)
{ 
回声“;
打印“
标题:”.$row['listTitle']”。
注释:'.$row['listCmt']。 “
日期:”.$row['listDt']”。
报价人:“.$row['mBCFName']”。.$row['mBCLName']”。
报价人:“.$row['moAmt']”; 回声“; }
产生:

基本上我想要的是:

    $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    foreach($result as $row) 
    { 
    echo "<div class='listing'>";
        print '<br>Title: ' . $row['listTitle'] . '<br>Comment: ' . $row['listCmt'] . 
        '<br>Date: ' . $row['listDt'] . '<br>Offer By: ' . $row['mBCFName']. ' ' .$row['mBCLName']. '<br> for: ' . $row['moAmt'];
    echo "</div>";
    }   
标题:苹果iPhone 4S(listTitle)
天:
报价人:某用户
报价:19.99
日期:2011年3月10日
报价人:某用户
报价:19.99
日期:2011年3月10日
报价人:某用户
报价:19.99
日期:2011年3月10日

基于每个字段都是相同的(listTitle、listLength、listCmt、listDt、mBCFName、mBCLName、moAmt、moDtOff),SQL中的更改最简单

Title: Apple iPhone 4S (listTitle)
Days: <some day amount <listLength>
Comment: some comment <listCmt>

    Offer By: some user <mBCFName mBCLName>
    Offer:  19.99 <moAmt>
    Date: 10/03/2011 < moDtOff>

    Offer By: some user <mBCFName mBCLName>
    Offer:  19.99 <moAmt>
    Date: 10/03/2011 < moDtOff>

    Offer By: some user <mBCFName mBCLName>
    Offer:  19.99 <moAmt>
    Date: 10/03/2011 < moDtOff>

    Offer By: some user <mBCFName mBCLName>
    Offer:  19.99 <moAmt>
    Date: 10/03/2011 < moDtOff>

如果不一样,那么代码将如何决定显示哪个New Balance 574男鞋?

这并不是那么容易-问题是要为其他字段显示什么(例如“mBCFName”字段-“Amanda”或“John”)

使用“Group by”SQL语句,然后定义规则(max、min、avg、Group_CONCAT…)来选择其他行-示例:

SELECT DISTINCT listTitle, listLength, listCmt, listDt, mBCFName, mBCLName, moAmt, moDtOff

在我看来,您似乎想将
listTitle
打印为相关注释上方的组标题

一种方法是跟踪上一行的
listTitle
,然后仅在与当前行有差异时打印。当然,您必须确保结果集是按
listTitle
排序的

另一种方法是使用一个查询获取该组标题的所有数据,然后使用另一个查询获取该组的内容


也可能在查询中执行此操作,但这将是一个棘手的问题,因为您希望第一条记录中的
listTitle
具有
listTitle
的值,而其他记录则具有
null
——直到下一条
listTitle
,这就不同了。

@user975947:我现在没有时间尝试编写实际的工作代码解决方案。这些描述中有没有不清楚的地方?这是有道理的,但是这个小脚本如何遍历所有匹配的组合呢。例如,
Title:Apple iPhone 4S
可能只有与该标题相关的某些注释。我想用两个脚本来做这件事。。一个是标题,另一个是其余部分。但是,如果它是两个独立的查询,我不知道如何将
listTitle
与其他字段匹配。有道理吗?你能写出一些粗略的代码吗?我真的很感激
SELECT listTitle, min(listLength), min(listCmt), min(listDt), GROUP_CONCAT(mBCFName), min(mBCLName), min(moAmt), min(moDtOff)
FROM User U, Listing L, Merchant M, MerchantOffer MO
WHERE U.uID = L.uID
  and L.listID = MO.listID
  and M.mID = MO.mId
GROUP BY listTitle
ORDER BY listDt DESC;