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