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);
}
我正在编写一个脚本,该脚本将来自 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);
}