【发布时间】:2016-03-09 11:03:59
【问题描述】:
当我收到以下错误消息时会出现什么错误
致命错误:未捕获的异常“PDOException”,带有消息“SQLSTATE[07002]:[Microsoft][ODBC Driver 11 for SQL Server]COUNT 字段不正确或语法错误”...
这是我正在使用的查询
$sql = $pdo->prepare("SELECT stockamount, stockname, stockbalance.stockid, SUM(ABS(reservationtransaction.stockquantity)) AS reservedamount FROM stockbalance
JOIN stock ON stockbalance.stockid = stock.stockid
LEFT JOIN reservationtransaction ON reservationtransaction.articleid = :artid
WHERE stockbalance.articleid = :artid AND ((changeddate > DATEADD(yy,-1,GETDATE()) AND inventorydate > DATEADD(yy,-1,GETDATE())) OR stockbalance.stockamount <> 0)
GROUP BY stockbalance.stockid");
$sql->bindValue(':artid', $productId);
$sql->execute();
我在 SO 中搜索过问题,但没有人相似或有帮助。
提前致谢。
编辑:此查询在使用 Microsoft SQL Server Management Studio 执行时工作正常,但在使用 PDO 时出现错误。
【问题讨论】:
-
您的
stockamount和stockname不是GROUP BY的一部分,因此如果没有像MIN这样的聚合方法,您将无法选择它们。 -
我猜你有 MySQL 背景:stackoverflow.com/questions/33629168/…。关键是 MySQL 聚合行为不是 ANSI 投诉。
-
根据错误消息,这是一个 PDOException,而不是 SQL 异常。可能是结果集与您尝试将其绑定到的对象不匹配?
-
@TabAlleman,当我使用 Microsoft SQL Server Management Studio 执行此操作时,一切正常,但使用 PDO 时,我收到此错误。我也尝试不使用
bindValue()并将值写入查询 - 同样的错误。
标签: sql-server pdo