0

multiple rows in sql単一のテーブル ボックスにデータを表示しようとしています。次の形式で:

"MovieTitle" "movieReleaseYear" "directorName"

The Matrix      1999             Andy Wachowski, Lana Wachowski

whereAndy Wachowski and Lana Wachowskiは異なる行から来ていますが、一緒に集められていますgroup_concat

それらをphpmyadminで取得するのに問題はありませんが、phpで表示する方法がわかりません。

私はこれを持っています:

$sql="SELECT 725G54_5_movies.MovieTitle, 725G54_5_movies.movieProductionYear,      GROUP_CONCAT( 725G54_5_director.directorName ) 
                    FROM 725G54_5_movies
                    JOIN 725G54_5_directed ON 725G54_5_movies.MovieID = 725G54_5_directed.movieID
                    JOIN 725G54_5_director ON 725G54_5_directed.directorID = 725G54_5_director.directorID
                    GROUP BY 725G54_5_movies.MovieTitle
                    ORDER BY $order ASC";
                $result=mysql_query($sql);  

                //Presentation av kontakterna via while-sats till ett formulär
                while($rows=mysql_fetch_array($result)){

                echo "<tr>
                <td>"; echo $rows['MovieTitle']; echo "</td>
                <td>";  echo $rows['movieProductionYear']; echo "</td>
                <td>"; 
                    while($director=mysql_fetch_array($rows['directorName'])){ echo $director; }; 
                    echo"</td>
                </tr>";
4

2 に答える 2

1

Group Concat はすでにディレクターの名前を連結しているため、反復する必要はありません$rows['directorName']。コード ID のこの部分は$rows、クエリ結果の$rows['director']行であり、この行の値であるため、反復できません。価値。

 $sql = "SELECT GROUP_CONCAT( 725G54_5_director.directorName ) AS directorNames ..."

while($rows=mysql_fetch_array($result)){

                echo "<tr>";
                echo "<td>" . $rows['MovieTitle'] . "</td>";
                echo "<td>" . $rows['movieProductionYear'] . "</td>"
                echo "<td>" . $rows['directorNames'] . "</td>" 
                echo"</tr>";
}

このフィールドを使用GROUP BY 725G54_5_movies.MovieTitleすると、このムービーのすべてが連結された結果になります。directorNamesdirectorName

于 2013-05-24T09:55:32.877 に答える
0

重要な情報は、配列内でこれにアクセスできるように GROUP_CONCAT にエイリアスを設定する必要があることです。読みやすくするために html のブロックを出力するときに、ヒアドキュメントも使用します。

$sql=
"SELECT
    725G54_5_movies.MovieTitle,
    725G54_5_movies.movieProductionYear,
    GROUP_CONCAT(725G54_5_director.directorName) directorNames
FROM
    725G54_5_movies
    JOIN
    725G54_5_directed
    ON 725G54_5_movies.MovieID = 725G54_5_directed.movieID
    JOIN
    725G54_5_director
    ON 725G54_5_directed.directorID = 725G54_5_director.directorID
GROUP BY
    725G54_5_movies.MovieTitle
ORDER BY
    $order ASC";

$result=mysql_query($sql);

//Presentation av kontakterna via while-sats till ett formulär
echo "<table>";
while($rows=mysql_fetch_array($result)){
    echo <<<HTML
        <tr>
            <td>{$rows['MovieTitle']}</td>
            <td>{$rows['movieProductionYear']}</td>
            <td>{$rows['directorNames']}</td>
        </tr>
HTML;
}
echo "</table>";
于 2013-05-24T10:05:57.713 に答える