我正在使用 ADODB 从 PHP 连接到 SQL Server 数据库。我有几个存储过程,我一直在执行得很好。由于某种原因,我创建的最后一个调用一直失败。我将调试设置为 true,它工作得很好。我不知道为什么会这样。
这是我得到的错误
Error: mssql_execute() [<a href='function.mssql-execute'>function.mssql-execute</a>]: stored procedure execution failed in /path/to/adodb/lib/adodb5/drivers/adodb-mssql.inc.php on line 768
这是我创建的将所有存储过程传递给的方法,就像我说它与其他存储过程一样,但是这个方法和我已经仔细检查了参数和存储过程的所有拼写是否正确。
protected function _getSpArray($db, $sp, array $spParams) {
try {
$stmt = $db->PrepareSP($sp);
foreach ($spParams as $param) {
$db->InParameter($stmt, $param[0], $param[1]);
}
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$rs = $db->Execute($stmt);
$rsArray = array();
if (!$rs) {
echo 'No records found \n';
return;
}
else {
foreach ($rs as $k => $row) {
$rsArray[$k] = $row;
}
}
return $rsArray;
} catch (ErrorException $e) {
echo $e->getMessage();
}
}
它在 adodb5/drivers/adodb-mssql.inc.php 的 #768 行失败
$rez = mssql_execute($sql[1]);
并且 sql 数组具有这些值
[0] stored_procedure_name
[1] resource id='657' type='mssql statement'
我在 PHP.net 上看到了以下评论,我将 freetds 主机名更改为与 IP 地址不同的名称,但仍然没有。由于我使用的是 adodb,因此我不确定免费结果。
http://www.php.net/manual/en/function.mssql-execute.php#93938
我正在使用 adodb 5.11