UNION MySQL 中的多个表,但只继续返回 1 个结果,为什么?

UNION multiple tables in MySQL but only 1 result continues to be returned, WHY?

我正在编写一个脚本,该脚本将来自 3 个不同 table 的商品存储到数据库购物车中。一种用于硬币、体育纪念品和硬币用品。这似乎适用于 1 table(供应品也是第一个被查询的供应品),但只有 returns 相同的单个结果,当该项目在第二个 table 的纪念品中例子。

项目 id returned 正确,因为它是由 $_REQUEST 全局存储的,而不是从数据库中提取信息,而所有其他信息都是,与该相关的其余信息查询后未正确 return 编辑项目 ID。似乎第二个 table 没有与第一个 table 合并。在纪念品页面中选择“添加到购物车”按钮时,只会 return 编辑同一条供应信息。

它使用相同的脚本存储到 db 购物车 table 中,因为供应品是和搜索相同的详细信息,那么为什么它不能正确存储第二个 table?对此的任何帮助将不胜感激。

$item = $db->query("SELECT title,price,shipping,subtotal FROM Supplies
                    UNION
                    SELECT title,price,shipping,subtotal FROM Memorabilia 
                    WHERE itemId = '$itemId'");

$data = $item->fetch_assoc();
$title = $data['title'];
$price = $data['price'];
$shipping = $data['shipping'];
$subtotal = $data['subtotal'];

上面的短代码是我在用户选择 "add to cart" 后根据唯一的项目 ID 从 2 table 请求项目信息的地方。该脚本有效,但对于纪念品它没有 return 正确的项目详细信息。它 return 是相同的供应项目数据,而不是...每次。

它似乎没有正确格式化代码,对此很抱歉。

您的代码可能存在一些问题:

1)WHERE itemId = '$itemId'只适用于Memorabilia,不是整个UNION

2) 由于该查询应该 return 多行,而不是一行,因此您应该在 $data 上循环。

第一个:

SELECT title,price,shipping,subtotal FROM 
(
    SELECT itemId, title,price,shipping,subtotal FROM Supplies
    UNION
    SELECT itemId, title,price,shipping,subtotal FROM Memorabilia
) X
WHERE X.itemId = '$itemId'

第二个,你可以试试:

while ($row = $item->fetch_assoc()) {
    print_r($row);
}