私は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ループを実行しようとしましたが、どこにもありません。任意のアイデアや助けをいただければ幸いです。
- EDIT -
次のように私のMySQLのクエリは次のとおりです。ADWの答えを1として
$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
");
、私はすべてのpcdb_colour_name
年代に、ちょうどcLongName
にgroup_concat
を試みたが、それは私を与えていません任意の出力。
- EDIT 2 -
これにSELECT
クエリを変更する:私は私に必要な出力を与え、私のPHPに$output .= "\t\t" . '<td>' . $row['cLongNames'] . '</td>' . "\r";
を使用することはでき
$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
");
。
+1恐ろしいことに、 'group_concat'が存在することは決してありませんでした。間違いなくそれを使うつもりです。 – Tomgrohl
'group_concat(cLongName)as cLongNames'を実行するのが最善でしょうか?それでアクセスできますか? – Tomgrohl
私には良い答えのようですが、私は 'select'クエリをどのようにフォーマットする必要があるのか分からなくなってしまいました。私はそれをQに入れました。あなたが見て私に知らせることができれば、それはすばらしいでしょう。詳細が必要な場合は、私に知らせてください。 –