sqlsrv_errors
Возвращает расширенные сведения об ошибках и предупреждениях в последней выполненной операции sqlsrv.
Вы можете получать с помощью функции sqlsrv_errors эти сведения, вызывая ее с различными значениями параметров, приведенными в разделе "Параметры" ниже.
По умолчанию предупреждения, созданные при вызове любой функции sqlsrv , обрабатываются как ошибки; при возникновении предупреждения во время вызова функции sqlsrv она возвращает значение false. Однако предупреждения, которые соответствуют значениям SQLSTATE 01000, 01001, 01003 и 01S02, никогда не обрабатываются как ошибки.
Следующая строка кода отключает описанное выше поведение; предупреждение, созданное вызовом функции sqlsrv , не приводит к тому, что функция возвращает значение false:
sqlsrv_configure("WarningsReturnAsErrors", 0);
Следующая строка кода позволяет возобновить использование поведения по умолчанию; предупреждения (с учетом перечисленных выше исключений) обрабатываются как ошибки:
sqlsrv_configure("WarningsReturnAsErrors", 1);
Вне зависимости от настройки, предупреждения можно извлечь, только вызывая sqlsrv_errors со значениями параметров SQLSRV_ERR_ALL или SQLSRV_ERR_WARNINGS (дополнительные сведения см. ниже в разделе "Параметры").
Синтаксис
sqlsrv_errors( [int $errorsAndOrWarnings] )
Параметры
$errorsAndOrWarnings(НЕОБЯЗАТЕЛЬНО): предопределенная константа. Этот параметр может принимать одно из значений, содержащихся в следующей таблице.
значение | Описание |
---|---|
SQLSRV_ERR_ALL | Возвращаются ошибки и предупреждения, созданные при последнем вызове функции sqlsrv . |
SQLSRV_ERR_ERRORS | Возвращаются ошибки, созданные при последнем вызове функции sqlsrv . |
SQLSRV_ERR_WARNINGS | Возвращаются предупреждения, созданные при последнем вызове функции sqlsrv . |
Если значение параметра не указано, возвращаются ошибки и предупреждения, созданные при последнем вызове функции sqlsrv .
Возвращаемое значение
Массив массивов или значение null. Каждый массив в возвращаемом массиве содержит три пары "ключ-значение". Следующая таблица содержит все ключи и их описания.
Ключ. | Description |
---|---|
SQLSTATE | Для ошибок, возникших в драйвере ODBC, SQLSTATE, возвращенный ODBC. Сведения о значениях SQLSTATE для ODBC см. в статье Коды ошибок ODBC. Ошибки, возникающие из драйверов Майкрософт для PHP для SQL Server, SQLSTATE IMSSP. Для предупреждений, исходящих из драйверов Майкрософт для PHP для SQL Server, SQLSTATE 01SSP. |
кодом | Для ошибок, возникших в SQL Server, собственный код ошибки SQL Server. Для ошибок, возникших в драйвере ODBC, код ошибки, возвращенный ODBC. Для ошибок, возникающих из драйверов Майкрософт для PHP для SQL Server, код ошибки Microsoft Drivers for PHP для SQL Server. Дополнительные сведения см. в статье 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);
?>