【发布时间】:2016-04-05 13:54:00
【问题描述】:
我收到以下错误
SQLSTATE[42000]:[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]必须将参数号 44 和后续参数作为“@name = value”传递。使用“@name = value”形式后,所有后续参数必须以“@name = value”形式传递。
这是我的代码
$pdowin->beginTransaction();
try {
// headers
$rows = $pdo->query("SELECT * FROM orders WHERE status = 2 AND productId IS NOT NULL GROUP BY id");
// fetch the rows
while ($row = $rows->fetch(PDO::FETCH_ASSOC)) {
$pdowin->query("EXEC sp_salesorderimport
@salesordernumberid = ".$row['id'].",
... // number of other params here
");
// items
$items = $pdo->query("SELECT * FROM orders WHERE id = " . $row['id'] . " ORDER BY name ASC");
while ($item = $items->fetch()) {
$pdowin->query("EXEC sp_salesorderrowimport
@salesordernumberid = ".$row['id'].",
@articleid = ".$item['artid'].",
... // number of other params here
");
}
}
$pdowin->commit();
echo "OK";
} catch (PDOException $e) {
$pdowin->rollback();
echo "ERROR: ".$e;
}
如果我单独执行这些查询,所有查询都有效。 提前致谢。
【问题讨论】:
-
你看44号参数了吗?根据缺少参数名称的错误查找
-
@JamesZ,参数号似乎一切正常。 44.
-
使用分析器,看看你的应用程序正在执行的 sql 语句是什么样的。是使用
@name=value的形式吗?如果此时错误不明显,则发布整个 sql 查询,以便我们无需猜测即可提供帮助。
标签: php sql-server stored-procedures pdo