我有一个遍历表的循环并显示客户ID。 它工作正常。在循环的顶部,它将变量设置为等于客户ID,然后将其回显到屏幕。如果表格中有七个项目,则显示七个OrderIds。
但是,如果我然后尝试使用该客户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'];
}
}
?>
答案 0 :(得分:0)
正如人们所说,错误是什么?
一眼就可以重用$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