我有一个while循环从MySQL数据库获取信息,通过php输出信息。我的代码是这样的:更改while循环的输出样式
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";
}
的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
我想有这种格式的数据:
lnID | lnLine | lnTitle | cLongName
---------------------------------------------------------------------------------------
lnID1 | lnLine1 | lnTitle1 | cLongname1, cLongname2, cLongname3
lnID2 | lnLine2 | lnTitle2 | cLongname1, cLongname2, cLongname3, cLongname4, cLongname5
我试过在我的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
");
按ADW的答案,我想group_concat
上只是cLongName
,所有pcdb_colour_name
的,但它不是给我任何输出。
- EDIT 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
");
让我在我的PHP中使用$output .= "\t\t" . '<td>' . $row['cLongNames'] . '</td>' . "\r";
,给我所需的输出。
+1真棒,从来不知道'group_concat'存在。肯定会使用它。 – Tomgrohl
是否最好将'group_concat(cLongName)作为cLongNames',然后才能访问? – Tomgrohl
它对我来说看起来是个很好的答案,我对于如何格式化“select”查询有点失落。我已经把它放在Q中,所以如果你能看一看并让我知道,那将是非常棒的。如果您需要更多信息,请告诉我。 –