Php 为什么我的求和查询打破了我的循环?

Php 为什么我的求和查询打破了我的循环?,php,pdo,sum,Php,Pdo,Sum,我有一个循环,循环遍历一个表并显示客户ID。 它很好用。在循环的顶部,它将一个变量设置为等于客户ID,然后将其回显到屏幕上。如果表中有七项,则显示七个OrderID 但是,如果我随后尝试使用该客户ID执行sum语句,程序将在第一次显示结果,但在第一次迭代后退出,而不是循环执行,就像记录集被销毁一样 我完全不明白为什么。代码如下。非常感谢: include ("../Connections/PDOConnection.php") $Query= " SELECT distinct Ord

我有一个循环,循环遍历一个表并显示客户ID。 它很好用。在循环的顶部,它将一个变量设置为等于客户ID,然后将其回显到屏幕上。如果表中有七项,则显示七个OrderID

但是,如果我随后尝试使用该客户ID执行sum语句,程序将在第一次显示结果,但在第一次迭代后退出,而不是循环执行,就像记录集被销毁一样

我完全不明白为什么。代码如下。非常感谢:

include ("../Connections/PDOConnection.php")

$Query= "
SELECT distinct
    OrderID,
    CustID,
    Name
FROM
    dbo.JNO_OrderHeader
WHERE
    CustID is Not Null 
";

$stmt = $pdo->prepare($Query);

if ($stmt->execute()) {

    while ($Order=$stmt->fetch(PDO::FETCH_ASSOC)){

        $OrderID = $Order['OrderID'];
        echo "<br>OrderID: " . $OrderID;


        $Query1 = "SELECT SUM(dbo.JNO_OrderDetail.ExtendedPrice) AS TotalOrderPrice 
                   FROM dbo.JNO_OrderDetail 
                   WHERE dbo.JNO_OrderDetail.OrderId = :OrderID";

        $stmt1 = $pdo->prepare($Query1);
        $stmt1->bindValue("OrderID", $OrderID);
        $stmt1->execute();
        $OrderTotal=$stmt1->fetch(PDO::FETCH_ASSOC);    

        echo "<br>Totals for order number ". $OrderID .": " . $OrderTotal['TotalOrderPrice'];
    }
}

?>

正如人们所说,错误是什么

乍一看,这可能是对$pdo的重用,请尝试使用$pdo1,就像对循环中的其他变量所做的那样

无论如何,像这样循环和发出多个SQL语句并不是最优的。考虑加入这样的事情?

SELECT
    oh.OrderID,
    oh.CustID,
    oh.Name
    SUM(od.ExtendedPrice) AS TotalOrderPrice
FROM
    dbo.JNO_OrderHeader oh
LEFT JOIN
    dbo.JNO_OrderDetail od ON od.OrderId = oh.OrderID
WHERE
    oh.CustID IS NOT NULL
GROUP BY 
    oh.OrderID,
    oh.CustID,
    oh.Name 

您是否显示PDO错误?在上一个查询返回所有行之前,不能在同一个连接上启动新查询?也许“fetchAll”会有用?嗯,你实际使用的是什么数据库?我假设“mysql”。不管怎样,这是值得检查的?这就完全解释了。我需要一个新的连接!谢谢,谢谢!!啊,又一个幸福的结局。我需要一个新的连接这是什么意思?另一个选项是子查询-选择一些列,从其他表中选择一些列作为第一个表中的额外列。根据数据的不同,它可能更快,也可能更慢!当然要视情况而定,但至少在我使用MySQL的经验中,子查询几乎从来都不是性能更好的选项。