gpt4 book ai didi

php - 从两个表中选择数据,返回数据并从item id中获取产品名称

转载 作者:行者123 更新时间:2023-11-29 14:34:38 24 4
gpt4 key购买 nike

<?php
$transactionOutput = "";
$sql = mysql_query("SELECT * FROM transactions WHERE emailaddress='$email'");
$productCount = mysql_num_rows($sql);
if($productCount > 0) {
while($row = mysql_fetch_array($sql)) {
$item_id = $row["item_id"];
$quantity = $row["quantity"];
$size = $row["size"];
$price = $row["price"];

$sql = mysql_query("SELECT * FROM products WHERE id='$item_id'");
$productCount = mysql_num_rows($sql);
while($row = mysql_fetch_array($sql)) {
$product_name = $row["product_name"];
}

$transactionOutput .= "<tr>";
$transactionOutput .= "<td align='center'>" .$product_name. "</td>";
$transactionOutput .= "<td align='center'>" .$quantity. "</td>";
$transactionOutput .= "<td align='center'>" .$size. "</td>";
$transactionOutput .= "<td align='center'>" .$price. "</td>";
$transactionOutput .= "</tr>";
}

} else {
$transaction_list = "You have made no transactions yet";
}


?>

我试图访问两个不同表中的数据,然后通过将产品表中的 id 与从交易表返回的 item_id 进行匹配来返回每个项目的产品名称。这确实输出了正确的信息,但它只显示第一笔交易,没有其他交易,我知道这也可能是可怕的编程

最佳答案

问题似乎是您使用相同的变量 $sql 来存储两个查询的结果集。所以这里可能发生的是这样的:

  1. 运行事务查询并将结果集存储在 $sql
  2. 从交易结果集中读取第一条记录
  3. 对于第一条交易记录,运行产品查询并将结果集再次存储在 $sql 中
  4. 输出存储到 $transactionOutput
  5. 从交易结果集中读取下一条记录

第 5 步是问题所在,因为原始事务结果集 - $sql - 被产品结果集覆盖。

尝试使用另一个变量进行产品查询:

$rsProduct = mysql_query("SELECT * FROM products WHERE id='$item_id'");
$productCount = mysql_num_rows($rsProduct);
while($row = mysql_fetch_array($rsProduct)) {
$product_name = $row["product_name"];
}

希望以上内容有道理!

编辑:作为附加建议,您可能想尝试使用 JOIN 查询在同一查询中检索交易和产品。这里:

SELECT `t`.*, `p`.`product_name`
FROM `transactions` `t`
LEFT JOIN `products` `p` ON `t`.`item_id` = `p`.`id`
WHERE `t`.`emailaddress` = '$email';

只需循环结果集即可完成!

关于php - 从两个表中选择数据,返回数据并从item id中获取产品名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9334716/

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