sqlsrv_errors

Gibt erweiterte Fehler- und/oder Warnungsinformationen über den letzten durchgeführten sqlsrv-Vorgang zurück.

Die sqlsrv_errors-Funktion kann Fehler- und/oder Warnungsinformationen zurückgeben, indem sie mit einem der Parameterwerte aufgerufen wird, die im unten stehenden Abschnitt "Parameter" angegeben sind.

Standardmäßig werden Warnungen, die beim Aufrufen einer beliebigen sqlsrv-Funktion generiert werden, als Fehler behandelt. Wenn eine Warnung beim Aufrufen einer sqlsrv-Funktion auftritt, gibt die Funktion "false" zurück. Warnungen, die den SQLSTATE-Werten 01000, 01001, 01003 und 01S02 entsprechen, werden jedoch nie als Fehler behandelt.

Die folgende Codezeile deaktiviert das oben genannte Verhalten. Eine Warnung, die beim Aufrufen einer sqlsrv-Funktion generiert wird, führt nicht dazu, dass die Funktion den Wert "false" zurückgibt:

sqlsrv_configure("WarningsReturnAsErrors", 0);

Die folgende Codezeile aktiviert wieder das Standardverhalten. Warnungen (mit den oben beschriebenen Ausnahmen) werden als Fehler behandelt:

sqlsrv_configure("WarningsReturnAsErrors", 1);

Unabhängig von der Einstellung können Warnungen nur abgerufen werden, indem sqlsrv_errors mit dem SQLSRV_ERR_ALL- oder dem SQLSRV_ERR_WARNINGS-Parameterwert aufgerufen wird (Einzelheiten finden Sie im unten stehenden Abschnitt "Parameter").

Syntax

sqlsrv_errors( [int $errorsAndOrWarnings] )

Parameter

$errorsAndOrWarnings[OPTIONAL]: Eine vordefinierte Konstante. Dieser Parameter kann einen der in der folgenden Tabelle aufgelisteten Werte annehmen:

Wert Beschreibung

SQLSRV_ERR_ALL

Fehler und Warnungen, die beim letzten sqlsrv-Funktionsaufruf generiert wurden, werden zurückgegeben.

SQLSRV_ERR_ERRORS

Fehler, die beim letzten sqlsrv-Funktionsaufruf generiert wurden, werden zurückgegeben.

SQLSRV_ERR_WARNINGS

Warnungen, die beim letzten sqlsrv-Funktionsaufruf generiert wurden, werden zurückgegeben.

Wenn kein Parameterwert angegeben wird, werden sowohl Fehler als auch Warnungen, die beim letzten sqlsrv-Funktionsaufruf generiert wurden, zurückgegeben.

Rückgabewert

Ein array von Arrays oder null. Jedes array im zurückgegebenen array enthält drei Schlüssel-Wert-Paare. In der folgenden Tabelle sind die Schlüssel mit Beschreibung aufgelistet:

Schlüssel Beschreibung

SQLSTATE

Für Fehler, die vom ODBC-Treiber stammen, der von ODBC zurückgegebene SQLSTATE. Informationen zu SQLSTATE-Werten für ODBC finden Sie unter ODBC-Fehlercodes.

Für Fehler, die aus SQL Server-Treiber für PHP stammen, ein SQLSTATE von IMSSP.

Für Warnungen, die aus SQL Server-Treiber für PHP stammen, ein SQLSTATE von 01SSP.

Code

Für Fehler, die aus SQL Server stammen, der systemeigene SQL Server-Fehlercode.

Für Fehler, die aus dem ODBC-Treiber stammen, der von ODBC zurückgegebene Fehlercode.

Für Fehler, die aus SQL Server-Treiber für PHP stammen, der Fehlercode von SQL Server-Treiber für PHP.

Meldung

Eine Beschreibung des Fehlers.

Auf die Array-Werte kann auch mit den numerischen Schlüsseln 0, 1 und 2 zugegriffen werden. Wenn weder Fehler noch Warnungen auftreten, wird null zurückgegeben.

Beispiel

Im folgenden Beispiel werden Fehler gezeigt, die bei einer fehlerhaften Anweisungsausführung zurückgegeben werden. (Die Anweisung schlägt fehl, da InvalidColumName kein gültiger Spaltenname in der angegebenen Tabelle ist.) Im Beispiel wird davon ausgegangen, dass SQL Server und die AdventureWorks-Datenbank auf dem lokalen Computer installiert sind. Alle Ausgaben werden in die Konsole geschrieben, wenn das Beispiel über die Befehlszeile ausgeführt wird.

<?php
/* Connect to the local server using Windows Authentication and 
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Could not connect.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Set up a query to select an invalid column name. */
$tsql = "SELECT InvalidColumnName FROM Sales.SalesOrderDetail";

/* Attempt execution. */
/* Execution will fail because of the invalid column name. */
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
      if( ($errors = sqlsrv_errors() ) != null)
      {
         foreach( $errors as $error)
         {
            echo "SQLSTATE: ".$error[ 'SQLSTATE']."\n";
            echo "code: ".$error[ 'code']."\n";
            echo "message: ".$error[ 'message']."\n";
         }
      }
}

/* Free connection resources */
sqlsrv_close( $conn);
?>

Siehe auch

Konzepte

Informationen zu den Codebeispielen in der Dokumentation

Weitere Ressourcen

API-Referenz (SQL Server-Treiber für PHP)