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

Posted

技术标签:

【中文标题】将来自多个表的查询数据放入 html 表中【英文标题】:Putting query data from multiple table in a html table 【发布时间】:2015-02-26 15:39:36 【问题描述】:

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

询问类型:动作

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

它将显示有关流派的所有电影名称以及这些表的列的 ID。

然后我尝试进行查询(见下文),它将能够吐出其他名称,但是当我尝试将它们放入 html 表中时,它会显示一个问题:

注意:未定义索引:../public_html/selection_lookup.php 第 53 行中的 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 对数据有什么影响。我也不会使用 mysql_* 函数,因为它们已被弃用。我要说你有一个 sql 注入问题,但看起来你实际上并没有使用 POST 数据。将 PDO 与准备好的语句一起使用。不要将所有的数据库、业务逻辑和 html 都放在一个文件中。虽然使用表格可能是合适的,但请考虑使用更现代的方式来呈现数据。 @Halfstop:表格没有错。你不应该使用它们来设计布局,但如果有表格数据,它们就完全没问题。 @ByteHamster 表格存在问题。它们可以使用,但有更好的方法来显示诸如此类的数据。您可以使用表格,也可以使用其他东西。 【参考方案1】:

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

$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>";
       

    ?>

我希望它会有所帮助。

【讨论】:

不客气!谢谢你验证我的回答。【参考方案2】:

在 SELECT 中为每个字段使用别名,例如

SELECT F.Name fname, ...

您将拥有此别名作为键

$row['fname']

【讨论】:

这个成功了,和其他的一样,完美,非常非常感谢!!

以上是关于将来自多个表的查询数据放入 html 表中的主要内容,如果未能解决你的问题,请参考以下文章

将来自两个选择查询的数据添加到一个表中,这些查询针对来自两个不同表的不同列数

使用 UNION 增强来自多个表的插入查询的性能

如何将一个表的查询结果插入到另一个表中?

将一个表的查询结果插入到另一个表中(oracle、mysql、sql 、GP)

利用反射处理多个表结构相同的数据的查询和数据库表的关联

LINQ to SQL:对来自订购系统的多个表的报告的聚合数据进行复杂查询