Ich verbinde eine Verbindung zu einer SQL Server-Datenbank von PHP mit ADODB. Ich habe mehrere gespeicherte Prozeduren, die ich gerade ausgeführt habe. Der letzte Anruf, den ich aus irgendeinem Grund erstellt habe, scheitert immer wieder. Ich habe debug als wahr und es funktioniert gut. Ich habe keine Ahnung, warum das passieren würde.ADODB/SQL Server mssql_execute gespeicherte Prozedur schlägt fehl, funktioniert aber, wenn debug auf true gesetzt ist
hier ist der Fehler, den ich
bekommenError: 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
Hier ist die Methode Ich habe alle meine gespeicherten Prozeduren zu übergeben, wie ich schon sagte es mit anderen gespeicherten Prozeduren funktioniert gut, aber dieses und ich habe doppelt geprüft, dass Alle Schreibweisen der Parameter und der gespeicherten Prozedur sind korrekt.
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();
}
}
Es ist auf dieser Linie # 768 von adodb5/drivers/adodb-mssql.inc.php
$rez = mssql_execute($sql[1]);
und die SQL-Array hat diese Werte
[0] stored_procedure_name
[1] resource id='657' type='mssql statement'
ich versagt haben habe die folgenden Kommentare auf PHP.net gesehen, ich habe meinen freetds Hostnamen geändert um etwas anderes als die IP Adresse zu sein und noch nichts. Ich bin mir über das freie Ergebnis nicht sicher, da ich adodb verwende.
http://www.php.net/manual/en/function.mssql-execute.php#93938
I adodb 5.11
Vielleicht sollten Sie ein wenig mehr Fehlerinformationen geben? "Ausführung fehlgeschlagen" ist NICHT, was SQL Server sagt, es bietet eine viel bessere Erklärung. PHP sollte das irgendwie entlarven. – TomTom
Ich schaue auf den SQL Server Profiler und es scheint nicht einmal dorthin zu gelangen. Ich bin mir nicht sicher, wie ich die Adodb-Bibliothek mehr debuggen soll als das, was ich habe.Ich wünschte, ich könnte mehr von einem Fehler finden, aber das ist alles, was ich finden kann –
Sie sollten die Version von ADODB hinzufügen, die Sie verwenden. – DarkThrone