sqlsrv_errors
Devuelve información ampliada de las advertencias o los errores de la última operación de sqlsrv realizada.
La función sqlsrv_errors puede devolver información de advertencias o errores al efectuar la llamada con uno de los valores de parámetro especificados en la sección Parámetros que figura a continuación.
De forma predeterminada, las advertencias generadas en una llamada a cualquier función de sqlsrv se tratan como errores; si se produce una advertencia en una llamada a una función de sqlsrv , se devuelve el valor False. Sin embargo, las advertencias que se corresponden con los valores 01000, 01001, 01003 y 01S02 de SQLSTATE nunca se tratan como errores.
La siguiente línea de código desactiva el comportamiento anterior; las advertencias generadas mediante una llamada a una función de sqlsrv no consiguen que dicha función devuelva el valor False:
sqlsrv_configure("WarningsReturnAsErrors", 0);
La siguiente línea de código restaura el comportamiento predeterminado; las advertencias (con las excepciones mencionadas anteriormente) se tratan como errores:
sqlsrv_configure("WarningsReturnAsErrors", 1);
Con independencia de la configuración, solo se pueden recuperar advertencias mediante una llamada a sqlsrv_errors con los valores de parámetro SQLSRV_ERR_ALL o SQLSRV_ERR_WARNINGS (para obtener más detalles, vea la sección Parámetros que figura a continuación).
Sintaxis
sqlsrv_errors( [int $errorsAndOrWarnings] )
Parámetros
$errorsAndOrWarnings[OPTIONAL]: Una constante predefinida. Este parámetro puede tomar uno de los valores que se muestran en la siguiente tabla:
Valor | Descripción |
---|---|
SQLSRV_ERR_ALL | Se devuelven los errores y las advertencias generados en la última llamada a una función de sqlsrv . |
SQLSRV_ERR_ERRORS | Se devuelven los errores generados en la última llamada a una función de sqlsrv . |
SQLSRV_ERR_WARNINGS | Se devuelven las advertencias generadas en la última llamada a una función de sqlsrv . |
Si no se especifica ningún valor de parámetro, se devuelven los errores y las advertencias generados mediante la última llamada a una función de sqlsrv .
Valor devuelto
Una matriz de matrices, o bien el valor Null. Cada matriz de la matriz devuelta contiene tres pares clave-valor. En la siguiente tabla se muestra cada una de las claves con su descripción:
Clave | Descripción |
---|---|
SQLSTATE | En los errores que se originan desde el controlador ODBC, el valor de SQLSTATE que devuelve ODBC. Para obtener información sobre los valores de SQLSTATE para ODBC, vea Códigos de error ODBC. Para los errores que se originan desde los Controladores de Microsoft para PHP para SQL Server, un valor de SQLSTATE de IMSSP. Para las advertencias que se originan desde los Controladores de Microsoft para PHP para SQL Server, un valor de SQLSTATE de 01SSP. |
código | Para los errores que se originan desde SQL Server, el código de error de SQL Server nativo. Para los errores que se originan desde el controlador ODBC, el código de error que devuelve ODBC. Para los errores que se originan desde los Controladores de Microsoft para PHP para SQL Server, el código de error de dichos Controladores de Microsoft para PHP para SQL Server . Para obtener más información, consulte Handling Errors and Warnings. |
message | Descripción del error. |
También se pueden consultar los valores de matriz con las claves numéricas 0, 1 y 2. Si no se produce ningún error ni advertencia, se devuelve el valor Null .
Ejemplo
En el ejemplo siguiente se muestran los errores que se producen durante la ejecución de una instrucción que no se realizó correctamente (Se produce un error en la instrucción porque InvalidColumName no es un nombre de columna válido en la tabla especificada). En el ejemplo se da por hecho que SQL Server y la base de datos AdventureWorks están instalados en el equipo local. Los resultados se agregan a la consola cuando se ejecuta el ejemplo en la línea de comandos.
<?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);
?>