Php 仅打印一个订单号以及与该订单号关联的项目

Php 仅打印一个订单号以及与该订单号关联的项目,php,mysql,distinct,Php,Mysql,Distinct,我有一个mysql表,其中包含我购物车数组中的项目,例如项目id、大小、数量,并且每行中都有一个订单号,因此如果我有3个项目,那么这三行的订单id将为2。还有另一个名为orders的表,其中包含这些项目的订单号以及名称、地址等。我希望能够打印出每个订单号以及与该订单号匹配的项目,但是它会重复订单号并打印三次,有没有其他我可以只订购编号:1那么下面的三个项目呢 此查询会打印出正确的信息,但会显示orderid 3次 $sql = mysql_query("SELECT transactions.*

我有一个mysql表,其中包含我购物车数组中的项目,例如项目id、大小、数量,并且每行中都有一个订单号,因此如果我有3个项目,那么这三行的订单id将为2。还有另一个名为orders的表,其中包含这些项目的订单号以及名称、地址等。我希望能够打印出每个订单号以及与该订单号匹配的项目,但是它会重复订单号并打印三次,有没有其他我可以只订购编号:1那么下面的三个项目呢

此查询会打印出正确的信息,但会显示orderid 3次

$sql = mysql_query("SELECT transactions.*, orders.orderid, orders.date  
FROM transactions
LEFT JOIN orders
ON transactions.orderid=orders.orderid
WHERE orders.userid = '$userID'");

mysql\u查询在技术上根本不显示任何内容。它只是从数据库中查询您的数据,并使其在本地可访问,以便处理您想要的数据。 因此,您实际上需要更改的地方是显示代码。它可以像下面这样按照您的预期工作

first = true;
while ($row = mysql_fetch_assoc($sql)){
    if (first){
        // put everything that shall only be written once here.
        echo $row["orderid"];
        first = false;
    }
    // put everything that shall be written for every row here.
    echo $row["date"];
}

以FlyingFoX为例

$currentOrderId = 0; 
while ($row = mysql_fetch_assoc($sql)){ 
    if ($currentOrderId != $row["orderid"]){ 
        // put everything that shall only be written once here. 
        echo $row["orderid"]; 
        $currentOrderId = $row["orderid"]; 
    } 
    // put everything that shall be written for every row here. 
    echo $row["date"]; 
} 

查询不需要更改。。。循环遍历resultset(此处未显示)的代码不。。。你需要在循环代码中做一个测试,只在orderid实际发生变化时才显示它。我想知道如何编写一个if语句来检查orderid是否发生了变化?谢谢,这很好,尽管它不会显示之后的下一个订单号,当用户有两个订单号3和4时,只显示订单号3。谢谢!这已经困扰了我一段时间了,效果很好。