我的目标是显示交易中的mysql数据,以便在不同的时间在不同的页面上查看。(交易完成后,需要从该表中删除mysql数据以清空购物车),所以,我尝试了将mysql结果存储在变量中,然后编码并将其数据插入我的Orders表中的Blob格式的列中。然后,我在订单页面(用于查看先前交易的页面)中添加了具有Blob值的表单输入。它显示表格和一行结果。 while循环似乎并不将获取的结果的每次迭代都存储到表中,因此我在订单页面上的输出仅包含一个订单项,而不是应有的多个。谁能帮助我了解如何解决我的循环问题,以便它可以正确存储数据?
我的while循环并尝试将其连接回字符串以用作我的订单页面上的html表:
...
$loop= "";
while($row = $result->fetch_assoc()) {
$loop .= "<tr><td>$row[product_id]</td>
<td>$row[price]</td>
<td>$row[quantity]</td></tr>";
}
$products= "<table><tr><th>Product</th>
<th>Price</th>
<th>Quantity</th>";
$end = "</table>";
$products= $products.$loop.$end;
$products=base64_encode(serialize($products));
$sql = "INSERT INTO orders (date,username,response,products)
VALUES ('$time', '$username', '$serial','$products')";
if ($conn->query($sql) === TRUE) {
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
我的订单页面:
echo "<table id= 'orders' style='text-align: center'>
<tr><th> date </th>
<th> username </th>
<th> address </th>
<th> product total </th>
<th> shipping total </th>
<th> reference # </th>
<th> products </th>
<th> packaging </th></tr>";
$sql = "SELECT * FROM orders";
$result = $conn->query($sql);
if (!$result) {
trigger_error('Invalid query: ' . $conn->error);
}
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$response = $row['response'];
echo "<tr> <td> $row[date]</td>
<td> $row[username]</td>
<td> $row[address]</td>
<td> $row[prodtotal]</td>
<td> shipping total </td>
<td> reference #</td>
<td> <form action=
'http://localhost/WIP/secure_login/cart/Backend/orderview.php' method='POST'>
<input type='hidden' name='products' value='$row[products]'>
<input type= 'submit' value='Products'></form></td>
<td> <form action=
'http://localhost/WIP/secure_login/cart/Backend/packageview.php'
method='POST'>
<input type='hidden' name='pack' value='$row[response]'>
<input type= 'submit' value='Packaging'></form></td></tr>";
}}
答案 0 :(得分:0)
由Solarflare解答: $ result-> fetch_assoc()是第二次使用该结果集吗?然后检查一下。但是通常,以这种方式存储数据并不是一个好主意。如果要存储购物车历史记录,请将其存储在购物车历史记录表中! (例如,一个包含product_id,价格,数量和订单表主键的表)。假设您决定例如将价格*数量显示为历史记录中的第四列。或者,如果您想将数据用于显示表格以外的其他内容,例如每月购物车产品数量的报告。 – 1小时前的Solarflare
这个答案告诉我,我不需要第二次获取结果,并且可以在第一个中完成所有操作。它不仅解决了我的问题,而且使我意识到,使用额外的表而不显示已保存的html代码将使我的购物车历史记录数据库在将来变得更加灵活。