sqlsrv_errors
最後に実行された sqlsrv 操作に関する拡張エラーや警告の情報を返します。
後の「パラメーター」セクションで示されているパラメーター値のいずれかを指定して Sqlsrv_errors 関数を呼び出すことにより、エラーや警告の情報を取得できます。
既定では、いずれかの sqlsrv 関数の呼び出しで生成される警告はエラーとして扱われます。 sqlsrv 関数の呼び出しで警告が発生した場合、関数は false を返します。 ただし、SQLSTATE 値 01000、01001、01003、および 01S02 に対応する警告はエラーとして扱われません。
次のコード行は、上で説明した動作を無効にします。 sqlsrv 関数の呼び出しによって警告が生成されても、関数は false を返しません。
sqlsrv_configure("WarningsReturnAsErrors", 0);
次のコード行は、既定の動作に戻します。(上で説明した場合を除き) 警告はエラーとして扱われます。
sqlsrv_configure("WarningsReturnAsErrors", 1);
設定に関係なく、警告は、SQLSRV_ERR_ALL または SQLSRV_ERR_WARNINGS パラメーター値を指定して sqlsrv_errors を呼び出すことによってのみ取得できます (詳細については後の「パラメーター」セクションを参照)。
構文
sqlsrv_errors( [int $errorsAndOrWarnings] )
パラメーター
$errorsAndOrWarnings[省略可能]: 定義済みの定数。 このパラメーターには、次の表に示すいずれかの値を指定できます。
[値] | 説明 |
---|---|
SQLSRV_ERR_ALL | sqlsrv 関数の最後の呼び出しで生成されたエラーと警告が返されます。 |
SQLSRV_ERR_ERRORS | sqlsrv 関数の最後の呼び出しで生成されたエラーが返されます。 |
SQLSRV_ERR_WARNINGS | sqlsrv 関数の最後の呼び出しで生成された警告が返されます。 |
パラメーターの値を指定しないと、 sqlsrv 関数の最後の呼び出しで生成されたエラーと警告が返されます。
戻り値
配列の array 、または null。 返される array 内の各 array には、3 つのキーと値のペアが含まれます。 次の表では、各キーとその説明を示します。
Key | 説明 |
---|---|
SQLSTATE | ODBC ドライバー由来のエラーの場合、ODBC が返す SQLSTATE。 ODBC の SQLSTATE 値については、「ODBC Error Codes (ODBC エラー コード)」を参照してください。 Microsoft SQL Server 用 Drivers for PHP由来のエラーの場合、IMSSP の SQLSTATE。 Microsoft SQL Server 用 Drivers for PHP由来の警告の場合、01SSP の SQLSTATE。 |
code | SQL Server 由来のエラーの場合、SQL Server のネイティブ エラー コード。 ODBC ドライバー由来のエラーの場合、ODBC が返すエラー コード。 Microsoft SQL Server 用 Drivers for PHP由来のエラーの場合、 Microsoft SQL Server 用 Drivers for PHP のエラー コード。 詳細については、「 Handling Errors and Warnings」を参照してください。 |
message | エラーの説明。 |
配列の値は、数値キー 0、1、および 2 でアクセスすることもできます。 エラーまたは警告が発生しなかった場合、 null が返されます。
例
次の例では、失敗したステートメント実行の間に発生したエラーを表示します (ステートメントは、InvalidColumName が指定されたテーブルの有効な列名ではないために失敗します)。この例では、ローカル コンピューターに SQL Server および AdventureWorks データベースがインストールされていることを前提にしています。 コマンド ラインからこの例を実行すると、すべての出力はコンソールに書き込まれます。
<?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);
?>