我有一个foreach MySQL查询,我希望返回具有相同订单ID的所有结果,但它会产生相同的产品ID。它知道具有该特定订单ID的正确条目数量,因为计数器在运行具有相同订单ID的所有条目后停止。
我的foreach声明:
$i = 0;
foreach ($_SESSION["cart_array"] as $per_item)
{
$item_id = $per_item['latestid'];
$fetchorder = mysql_query("SELECT ISBN FROM transactions WHERE Order_ID='$latestid'");
while ($row = mysql_fetch_array($fetchorder))
{
$ISBN = $row["ISBN"];
};
echo "ISBNs in order $latestid are: $ISBN";
echo "<br>";
$i++;
};
$ latestid是从先前的查询获得的,正确导致收集最新的订单ID。
我的数据库表如下所示:
Table: transactions
Order_ID | ISBN
25 | 11111111
25 | 22222222
25 | 33333333
然而,我得出的结果是:
latestid = 25
ISBNs in order 25 are: 33333333
ISBNs in order 25 are: 33333333
ISBNs in order 25 are: 33333333
(latestid = 25来自之前的sql查询,仅用于测试目的以确保其正常工作。)
当它应该从该特定订单ID列出所有内容时,导致此项显示相同的商品ID(ISBN)的原因是什么?
提前致谢,
杰米。
答案 0 :(得分:2)
你的回音不在循环中,所以它的打印只能在$ ISBN的最后一次分配。将它放在while循环中。你的代码应该是这个。
i = 0;
foreach ($_SESSION["cart_array"] as $per_item)
{
$item_id = $per_item['latestid'];
$fetchorder = mysql_query("SELECT ISBN FROM transactions WHERE Order_ID='$latestid'");
while ($row = mysql_fetch_array($fetchorder))
{
$ISBN = $row["ISBN"];
echo "ISBNs in order $latestid are: $ISBN";
echo "<br>";
};
$i++;
}
答案 1 :(得分:0)
试试这个
$i = 0;
foreach ($_SESSION["cart_array"] as $per_item)
{
$item_id = $per_item['latestid'];
$fetchorder = mysql_query("SELECT ISBN FROM transactions WHERE Order_ID='$latestid'");
while ($row = mysql_fetch_array($fetchorder))
{
$ISBN = $row["ISBN"];
echo "ISBNs in order $latestid are: $ISBN";
echo "<br>";
};
$i++;
};