更改while循环的输出样式

Sco*_*own 2 php mysql

我有一个while循环从MySQL数据库获取信息,通过PHP输出信息.我的代码是这样的:

while($row = mysql_fetch_array($result)) {
  $output .= '<tr>' . "\r";
  $output .= '<td>' . $row['lnID'] . '</td>' . "\r";
  $output .= '<td>' . $row['lnLine'] . '</td>' . "\r";
  $output .= '<td>' . $row['lnTitle'] . '</td>' . "\r";
  $output .= '<td>' . $row['cLongName'] . '</td>' . "\r";
  $output .= '</tr>' . "\r";
}
Run Code Online (Sandbox Code Playgroud)

cLongName可以在数据库中有多个条目,所以它在这个形式输出数据:

lnID  | lnLine  | lnTitle  | cLongName
---------------------------------------
lnID1 | lnLine1 | lnTitle1 | cLongname1
lnID1 | lnLine1 | lnTitle1 | cLongname2
lnID1 | lnLine1 | lnTitle1 | cLongname3
lnID2 | lnLine2 | lnTitle2 | cLongname1
lnID2 | lnLine2 | lnTitle2 | cLongname2
lnID2 | lnLine2 | lnTitle2 | cLongname3
lnID2 | lnLine2 | lnTitle2 | cLongname4
lnID2 | lnLine2 | lnTitle2 | cLongname5
Run Code Online (Sandbox Code Playgroud)

我想要这种格式的数据:

lnID  | lnLine  | lnTitle  | cLongName
---------------------------------------------------------------------------------------
lnID1 | lnLine1 | lnTitle1 | cLongname1, cLongname2, cLongname3
lnID2 | lnLine2 | lnTitle2 | cLongname1, cLongname2, cLongname3, cLongname4, cLongname5
Run Code Online (Sandbox Code Playgroud)

我已经尝试在我的while循环中使用foreach循环,但是无处可去.任何想法或帮助将不胜感激.

- 编辑 -

我的MySQL查询如下:

$result = mysql_query("
  SELECT
    pcdb_line.lnID, pcdb_line.lnLine, pcdb_line.lnTitle,
    pcdb_colourways.cwLine, pcdb_colourways.cwColID1,
    pcdb_colour_name.cID, pcdb_colour_name.cLongName, pcdb_colour_name.cHex
  FROM pcdb_line
  GROUP BY pcdb_line.lnID
  LEFT JOIN pcdb_colourways
  ON (pcdb_line.lnID = pcdb_colourways.cwLine)
  LEFT JOIN pcdb_colour_name
  ON (pcdb_colour_name.cID = pcdb_colourways.cwColID1)
  LIMIT 50
");
Run Code Online (Sandbox Code Playgroud)

按照ADW的回答,我试过group_concatcLongName所有pcdb_colour_name的,但它并没有给我任何输出.

- 编辑2 -

SELECT查询更改为:

  $result = mysql_query("
    SELECT
      pcdb_line.lnID, pcdb_line.lnLine, pcdb_line.lnTitle,
      pcdb_colourways.cwLine, pcdb_colourways.cwColID1,
      pcdb_colour_name.cID, group_concat(pcdb_colour_name.cLongName) AS cLongNames, pcdb_colour_name.cHex
    FROM pcdb_line
    LEFT JOIN pcdb_colourways
    ON (pcdb_line.lnID = pcdb_colourways.cwLine)
    LEFT JOIN pcdb_colour_name
    ON (pcdb_colour_name.cID = pcdb_colourways.cwColID1)
    GROUP BY pcdb_line.lnID
    LIMIT 50
  ");
Run Code Online (Sandbox Code Playgroud)

允许我$output .= "\t\t" . '<td>' . $row['cLongNames'] . '</td>' . "\r";在我的php 上使用,给我所需的输出.

ADW*_*ADW 6

您可能最好将数据库查询修改为:

select lnID,lnLine,lnTitle,group_concat(cLongName) from table group by lnID,lnLine,lnTitle;
Run Code Online (Sandbox Code Playgroud)