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 つのキーと値のペアを格納します。次の表は、それぞれのキーとその説明の一覧です。
キー | 説明 |
---|---|
SQLSTATE |
発生元が ODBC ドライバのエラーの場合は、ODBC によって返された SQLSTATE。ODBC の SQLSTATE 値については、「ODBC Error Codes (英語)」を参照してください。 発生元が SQL Server Driver for PHP のエラーの場合は、IMSSP という SQLSTATE。 発生元が SQL Server Driver for PHP の警告の場合は、01SSP という SQLSTATE。 |
code |
発生元が SQL Server のエラーの場合は、SQL Server のネイティブ エラー コード。 発生元が ODBC ドライバのエラーの場合は、ODBC によって返されたエラー コード。 発生元が SQL Server Driver for PHP のエラーの場合は、SQL Server Driver for PHP のエラー コード。 |
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);
?>