0
<?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("audio_book");
    $selectData = "SELECT * FROM user, library, audios 
                         WHERE user.user_id = library.user_id AND library.library_id = audios.library_id";
    $result = mysql_query($selectData) or die(mysql_error());
    //print_r(mysql_fetch_array($result)); // it works fine here
    while($row = mysql_fetch_array($result));
        echo $row['user_name']."-".$row['library_name']."-".$row['filename'];

上記のコードが指定された列名から値を取得しようとすると、問題は、print_r()を使用したときに希望どおりの結果が得られる間、エコー内のその場所に何も表示されないことです。何が問題になる可能性がありますか?

4

1 に答える 1

0

代わりにこのクエリを試してください。JOINステートメントを利用します。

SELECT * FROM user INNER JOIN library ON user.user_id=library.user_id INNER JOIN audios ON library.library_id=audios.library_id

以下のコードを参照してください(whileステートメントに1つの変更を加えたことに注意してください)

<?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("audio_book");
    $selectData = "SELECT * FROM user INNER JOIN library ON user.user_id=library.user_id INNER JOIN audios ON library.library_id=audios.library_id";
    $result = mysql_query($selectData) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
        echo $row['user_name']."-".$row['library_name']."-".$row['filename'];
    }

MySQLiへの切り替えを検討することをお勧めします。以下に、mysqliを介してこれを行う方法の例を示しました。

手続き型(現在、手続き型ロジックを使用しているため):

<?php
        $connect = mysqli_connect("localhost", "root", "password", "audio_book");
        $selectData = "SELECT * FROM user INNER JOIN library ON user.user_id=library.user_id INNER JOIN audios ON library.library_id=audios.library_id";
        $result = mysqli_query($connect,$selectData) or die(mysqli_error($connect));
        while($row = mysqli_fetch_array($result)){
            echo $row['user_name']."-".$row['library_name']."-".$row['filename'];
        }
于 2012-07-14T15:56:36.783 に答える