gpt4 book ai didi

php - 通过外键获取 MySQL

转载 作者:行者123 更新时间:2023-11-29 08:02:16 24 4
gpt4 key购买 nike

这对我个人来说是一个很难破解的问题

我的困境是:

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

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

“订单”表如下所示:
•串行(主键,自动增量)
•日期(日期类型)
•customerid(类型 INT(11))(指向名为“billing”的表中的序列号的外键)
•总计(FLOAT 类型)

表“账单”如下所示:
•串行(主键,自动增量)
•名称(类型VARCHAR(25))
•用户ID(类型VARCHAR(25))

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

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

现在,我只想使用用户 ID,调用我的数据库(仅“账单”表),并能够从“订单”中获取序列号、日期和总计,并从其开始获取产品 ID、数量以及“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 注入(inject)、数据格式化/输入问题以及诸如此类的困惑。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com