Php 将来自多个表的查询数据放入html表中

Php 将来自多个表的查询数据放入html表中,php,html,mysql,sql,html-table,Php,Html,Mysql,Sql,Html Table,我有一个数据库,有5个表,其中1个是用ID填充的。我想将它们链接到ID已经存在的其他表,以便显示名称。例如: 提问类型:动作 它将检索电影名称、导演名称、流派名称、分级和3D选项 它将显示所有关于电影类型的电影名称,以及这些表格列的ID 然后,我尝试让下面的查询能够吐出其他名称,但当我尝试将它们放在html表中时,会出现一个问题,即: 注意:第53行的../public_html/selection_lookup.php中未定义的索引:F.Name 表中的其他名称也是如此 我使用的代码如下所示:

我有一个数据库,有5个表,其中1个是用ID填充的。我想将它们链接到ID已经存在的其他表,以便显示名称。例如:

提问类型:动作

它将检索电影名称、导演名称、流派名称、分级和3D选项

它将显示所有关于电影类型的电影名称,以及这些表格列的ID

然后,我尝试让下面的查询能够吐出其他名称,但当我尝试将它们放在html表中时,会出现一个问题,即:

注意:第53行的../public_html/selection_lookup.php中未定义的索引:F.Name

表中的其他名称也是如此

我使用的代码如下所示:

<?php
    include ('login.php');
    $dcxn = mysql_connect($db_hostname, $db_username, $db_password) or die ("couldn't connect to server");

    mysql_select_db($db_database) or die("unable to select database:" . mysql_error());

    $selection = $_POST["GenreSel"];

    $query= "
                SELECT F.Name, D.Name, G.Genre, R.Rating, T.ThreeDeeOption
                FROM Film F, Director D, Genre G, Rating R, ThreeDee T
                WHERE F.GenreID=$selection 
                AND F.DirID = D.DirID
                AND F.GenreID = G.GenreID
                AND F.RatingID = R.RateID
                AND F.ThreeDeeID = T.ThreeDeeID
    ";


    $result = mysql_query($query);

    if (!$result) die ("Database access failed:" . mysql_error());

    echo '<pre>';
    print_r($result);
    echo'</pre>';

?>


<table border="ridge">
    <tr class="header">
        <td>Name</td>
        <td>Director</td>
        <td>Genre</td>
        <td>Rating</td>
        <td>available in 3D?</td>
    </tr>
    <?php
       while ($row = mysql_fetch_array($result)) {
           echo "<tr>";
           echo "<td>".$row['F.Name']."</td>";
           echo "<td>".$row['D.Name']."</td>";
           echo "<td>".$row['G.Genre']."</td>";
           echo "<td>".$row['R.Rating']."</td>";
           echo "<td>".$row['T.ThreeDeeOption']."</td>";
           echo "</tr>";
       }

    ?>
</table>

例如,在“选择”中为每个字段使用别名

$row['fname']
您将使用此别名作为密钥

$query= " SELECT F.Name as fname, D.Name as dname, G.Genre, R.Rating, T.ThreeDeeOption
                    FROM Film F, Director D, Genre G, Rating R, ThreeDee T
                    WHERE F.GenreID=$selection 
                        AND F.DirID = D.DirID
                        AND F.GenreID = G.GenreID
                        AND F.RatingID = R.RateID
                        AND F.ThreeDeeID = T.ThreeDeeID
                ";

在查询中,如果有两个同名字段,可以使用别名,如下所示:

 <?php
       while ($row = mysql_fetch_array($result)) {
           echo "<tr>";
           echo "<td>".$row['fname']."</td>";
           echo "<td>".$row['dname']."</td>";
           echo "<td>".$row['Genre']."</td>";
           echo "<td>".$row['Rating']."</td>";
           echo "<td>".$row['ThreeDeeOption']."</td>";
           echo "</tr>";
       }

    ?>
然后,您可以通过以下方式检索数据:


我希望这会有所帮助。

看起来您需要调试代码。设置断点并查看$row对数据的作用。我也不会使用mysql_*函数,因为它们已被弃用。我本来想说您有sql注入问题,但看起来您实际上并没有使用POST数据。在准备好的语句中使用PDO。不要将所有数据库、业务逻辑和html都放在一个文件中。在使用表可能是合适的时候,考虑更现代的方式来呈现数据。@半站:表没有错。您永远不应该使用它们来设计布局,但如果有表格数据,它们完全可以。@ByteHamster表格有问题。它们可以正常使用,但是有更好的方法来显示这样的数据。你可以用一张桌子,也可以用其他东西。这和另一张一样,非常好,非常感谢!!不客气!谢谢你验证我的答案。
 <?php
       while ($row = mysql_fetch_array($result)) {
           echo "<tr>";
           echo "<td>".$row['fname']."</td>";
           echo "<td>".$row['dname']."</td>";
           echo "<td>".$row['Genre']."</td>";
           echo "<td>".$row['Rating']."</td>";
           echo "<td>".$row['ThreeDeeOption']."</td>";
           echo "</tr>";
       }

    ?>