提问人:Cazlo 提问时间:11/9/2022 最后编辑:Cazlo 更新时间:11/10/2022 访问量:35
如何从JSON(来自SQL DB)获取数量数据,并将其插入到已经存在的WHILE循环中?
How to get the amount data from JSON (from SQL DB), and insert that within an already existing WHILE loop?
问:
我正在制作一个订单页面,人们可以在其中查看他们过去的订单。
目前,我得到的数据如下:
$qry = "SELECT * FROM `orders` WHERE `id` = ? AND `user_id` = ?";
$stmt = $conn->prepare($qry);
$stmt->bind_param("ii", $order, $id);
$stmt->execute();
$order = $stmt->get_result()->fetch_object();
$data = utf8_encode($order->products);
$dataAssoc = json_decode($data, true);`
然后在 HTML 中读出(对于列中的每个产品),如下所示;
(读出产品名称、版本、价格等)products
if (!$dataAssoc == "") {
foreach ($dataAssoc as $key => $value) {
// Get product data
$qry = "SELECT * FROM `products` WHERE `id`= ?";
$stmt = $conn->prepare($qry);
$stmt->bind_param("i", $value);
$stmt->execute();
$productData = $stmt->get_result();
while ($product = $productData->fetch_object()) {
echo "
<div class='col'>
<div class='product'>
<div class='thumbnail'>
<img src='assets/images/product/product-thumb/". $product->thumbnail . "' alt='product image'>
</div>
<div class='product-content'>
<div class='inner'>
<h5 class='title'>". $product->name . " (" . $product->version .")</h5>
<div class='product-price'>
<span class='price current-price'>€". str_replace('.', ',', $product->price) . "</span>
</div>
</div>
</div>
</div>
</div>
";
}
}
}
现在,至于我想要完成什么;
我还有一个列,将订购的产品数量(最初来自表)保存为 JSON;
即:(第二个数字是金额)。amounts
cart
{ "1":"3", "2":"2", "3":"7" }
类似于产品在 JSON 中保存的方式;
即:(第二个数字是产品 ID)。{ "1":"9", "2":"12", "3":"2" }
将这些数量值导入原始 WHILE 循环的最佳方法是什么?我尝试单独获取金额数据;
$amounts = utf8_encode($order->amounts);
$amountAssoc = json_decode($amounts, true);
并将其放在原始的 WHILE 中;
if (!$amountAssoc == "") {
foreach ($amountAssoc as $key => $value) {
echo $value;
}
}
这导致每次加载新产品时,所有产品金额都会一个接一个地写出来。
对我来说,实现这一点的最佳方法是什么? 我应该坚持使用这个 WHILE 循环并重构它,我应该重构数据库还是缺少一些简单的解决方案?
答:
0赞
Cazlo
11/10/2022
#1
好吧,我自己已经想出了一个(非常简单的)解决方案,我会把它发布在这里,以防万一其他人遇到类似的问题并正在寻找答案。
我删除了该列并更改了该列以包含该数据。amounts
products
它在哪里;
{ "1":"3", "2":"2", "3":"7" }
(第一个数字只是每个产品的计数器,
它现在就像;
{ "5":"3", "7":"2", "2":"7" }
第一个(关键)是产品,第二个(值)是它的数量。
由于它位于单个 JSON 列中,因此读出其值变得像回显$value
一样简单。
评论