0
SELECT
    `s1`.`question`,
    GROUP_CONCAT(QUOTE(`so1`.`name`)) `answers`
FROM
    `survey` `s1`
INNER JOIN
    `survey_option` `so1`
ON
    `so1`.`survey_id` = `s1`.`id`
GROUP BY
    `s1`.`id`;

このクエリは、引用符で囲まれたカンマ区切りの文字列として製品questionリストを作成します。answer

回答文字列を配列に展開するにはどうすればよいですか?

最初に頭に浮かぶのはexplode("','", mb_substr($answers_str, 1, -1)).

注意すべき問題はありますか?

4

2 に答える 2

0
# Run query
SELECT
#   `s1`.`id`,
    `s1`.`question`,
    `so1`.`name`
FROM
    `survey` `s1`
INNER JOIN
    `survey_option` `so1`
ON
    `so1`.`survey_id` = `s1`.`id`

# Fetch query
$arr = array();
while($row = mysql_fetch_object($query))
    $arr[$row->question][] = $row->name;

# If question's aren't unique, you can also fetch 'id' in query and:
$arr = array();
while($row = mysql_fetch_object($query))
    $arr[$row->id][] = $row;

これは、クエリ値を として保存することを前提としています$queryGROUP_CONCAT後で分割する予定がある場合は、 を実行しても意味がありません。単純に配列とそのキー値を使用するだけで十分です。

于 2013-07-15T09:33:37.437 に答える