我有一個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中,所以如果你能看一看並讓我知道,那將是非常棒的。如果您需要更多信息,請告訴我。 –