【问题标题】:add sql data (2 tables ) from database to webpage将 sql 数据(2 个表)从数据库添加到网页
【发布时间】:2017-06-10 11:38:27
【问题描述】:

我正在尝试将两个表中的数据添加到我的 PHP 网站。数据应采用表格布局。表“自行车”正在使用制造商表中的 ID

<?php
    echo '<table>';
    echo '<thead>';
    echo '<tr>';
    echo '<th>Model</th>';
    echo '<th>condition</th>';
    echo '<th style="width: 10%">Price</th>';
    echo '<th style="width: 5%">&nbsp;</th>';
    echo '<th style="width: 5%">&nbsp;</th>';
    echo '</tr>';

    $products = $pdo->query('SELECT * FROM bikes');

    foreach ($products as $product) {
        echo '<tr>';
        echo '<td>' . $product['model'] . '</td>';
        echo '<td>' . $product['condition'] . '</td>';
        echo '<td>£' . $product['price'] . '</td>';
        echo '<td><a style="float: right" href="editbike.php?id=' . $product['id'] . '">Edit</a></td>';
        echo '<td><form method="post" action="deletebike.php">
        <input type="hidden" name="bikeId" value="' . $product['id'] . '" />
        <input type="submit" name="submit" value="Delete" />
        </form></td>';
        echo '</tr>';
    }

    echo '</thead>';
    echo '</table>';

    }

    else {
?>

另一个表称为制造商...有没有办法可以将制造商表中的数据添加到网站中,并且数据彼此相邻列出,因为这看起来像表格布局? (如果不确定我的意思,请添加我正在尝试做的电子邮件和不良电子邮件屏幕截图)

【问题讨论】:

  • 你听说过 SQL Server 中的 Join 吗?!
  • 请去掉多余的标签,MySQL和SQL-Server不一样,

标签: php mysql sql-server


【解决方案1】:

您需要在 2 个表之间创建关系,例如将manufacturer_id 添加到bikes 表中。

然后您可以简单地在两个表中进行选择:

$products = $pdo->query('SELECT b.*, m.* FROM bikes AS b, manufacturers AS m WHERE m.id = b.manufacturer_id');

use a join:

$products = $pdo->query('SELECT b.*, m.* FROM bikes AS b JOIN manufacturers AS m ON m.id = b.manufacturer_id');

如果这些表共享列名,例如“名称”,那么您需要为其中之一设置别名:

$products = $pdo->query('SELECT b.*, m.*, m.name AS manufacturer_name FROM bikes AS b JOIN manufacturers AS m ON m.id = b.manufacturer_id');

$products['name'] = 'bike name';
$products['manufacturer_name'] = 'manufacturer name';

只要两列名称相同,第一个选择将优先,在上述情况下,bikes 将优先,如果您反转选择,制造商将优先:

$products = $pdo->query('SELECT m.*, b.*, m.name AS manufacturer_name FROM bikes AS b JOIN manufacturers AS m ON m.id = b.manufacturer_id');

$products['name'] = 'manufacturer name';
$products['manufacturer_name'] = 'manufacturer name';

【讨论】:

  • 您需要确保表格存在并且自行车表格上的manufacturer_id 与制造商表格上的id 相同。
  • 所以当我添加上面的代码(任何一个)时,我可以添加这个代码'echo'name'吗? ' 和 ' 回声 '' 。 $product['name'] 。 ''; (添加在正确的位置)'以显示制造商表以及自行车表......自行车表中已经有一个制造商 ID
  • 如果表具有相同的列,您需要添加别名,我已经更新了我的答案以向您展示如何执行此操作。
  • bikes 表中有一个外键引用了 manu 表...它们没有相同的列名抱歉造成混淆...我正在尝试获取列(名称)来自manu'表,因此网站显示来自manu'表的信息而不仅仅是自行车表......我可以通过电子邮件发送给你我的意思吗?还是我应该把我的电子邮件留在这里,你给我发电子邮件?
  • 您可以使用我的答案中的示例来执行此操作,它都将成为 $product 数组的一部分。如果您转储 $product 数组(使用 var_dump 或类似的),您将看到它包含两个表中的列。如果不是,那是因为列具有相同的名称,并且需要根据我的示例使用别名。
猜你喜欢
  • 2017-07-27
  • 2016-11-09
  • 2014-03-11
  • 2023-04-03
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
相关资源
最近更新 更多