PHP 5.6 MySQL foreach查询返回相同的值

时间:2017-05-17 05:40:58

标签: php mysql foreach

我有一个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)的原因是什么?

提前致谢,

杰米。

2 个答案:

答案 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++;
    };