这个对我个人来说很难破解

我的困境是:

我的数据库中有3个InnoDB表,分别为“ order_detail”,“ orders”,“ billing”,其结构如下:

表“ order_detail”如下所示:
•orderid(指向表中称为“ orders”的序列的外键)
•productid(指向称为“产品”的表中的序列的外键)
•质量(INT型)
•价格(FLOAT类型)

表“订单”如下所示:
•序列号(主键,auto_increment)
•日期(DATE类型)
•customerid(类型INT(11))(指向称为“计费”的表中的序列的外键)
•总计(FLOAT类型)

表“计费”如下所示:
•序列号(主键,auto_increment)
•名称(类型VARCHAR(25))
•userid(类型VARCHAR(25))

我有一个PHP文件,旨在简单地打印出所下订单的描述,例如:

订单编号|产品编号|金额|数量合计订购日期

现在,我只想使用userid,调用我的数据库(仅“ billings”表),并能够从“ orders”及其后续版本中获取序列号,日期和总计,从而从中获取productid,数量和价格“ order_detail”表。

现在,我无法正常工作的代码如下所示:

<?php
        require("includes/config.php");
        $users_query=mysql_query("SELECT * FROM billing WHERE userid='$username'");
        $row=mysql_fetch_array($users_query);
        ?>

        <table border="0" cellpadding="5px" cellspacing="1px" style="font-family:Verdana, Geneva, sans-serif; font-size:11px; background-color:#E1E1E1" width="100%">
        <?php {
                echo '<tr bgcolor="#FFFFFF" style="font-weight:bold"><td>Order ID</td><td>Product ID</td><td>Amount</td><td>Quantity</td><td>Total</td><td>Date Ordered</td></tr>';
           ?>
        <tr bgcolor="#FFFFFF">
            <td><?php echo $row['serial']; ?></td>
            <td><?php echo $row['productid']; ?></td>
            <td><?php echo $row['price']; ?></td>
            <td><?php echo $row['quantity']; ?></td>
            <td><?php echo $row['total']; ?></td>
            <td><?php echo $row['date']; ?></td>
        </tr>
        <?php } ?>
        </table>


(如何)我可以检索提到的列而无需分别调用“ order_details”和“ order”表?当我检查phpMyAdmin时,InnoDB外键链接似乎正常工作。提前谢谢了!

最佳答案

只能使用ORM访问外部数据。他们可以检查数据库结构并即时挖掘所需的数据。在这种情况下,他们将为您处理查询。

但是我想您希望/需要以旧方式手工处理数据。

您可以通过进行联合查询来实现此目的,例如:

SELECT o.serial AS serial, d.productid AS productid, d.price AS price, d.quantity AS quantity, o.total AS total, o.date AS date
FROM order_detail d LEFT JOIN orders o ON o.serial = d.orderid LEFT JOIN billing b ON b.serial = o.customerid
WHERE b.userid = '$username';


顺便说一句,不应在数据库中存储可以即时计算的值(例如:order.total列,它是相关价格和数量的SUM())。

我个人认为,您不应该使用这样的手工查询。它使您面临SQL注入,数据格式化/键入问题以及此类麻烦。

关于php - 通过外键获取MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23499144/

10-12 00:23
查看更多