Partager via


Procédure : configurer la gestion des erreurs et des avertissements

Cette rubrique explique comment configurer le Pilote SQL Server pour PHP afin de gérer les erreurs et les avertissements.

Par défaut, le Pilote SQL Server pour PHP traite les avertissements comme des erreurs ; un appel à une fonction sqlsrv qui génère une erreur ou un avertissement retourne false. Pour désactiver ce comportement, utilisez la fonction sqlsrv_configure. Lorsque la ligne de code suivante est placée au début d'un script, une fonction sqlsrv qui génère uniquement des avertissements (aucune erreur) ne retourne pas false :

sqlsrv_configure("WarningsReturnAsErrors", 0);

La ligne de code suivante rétablit le comportement par défaut (les avertissements sont traités comme des erreurs) :

sqlsrv_configure("WarningsReturnAsErrors", 1);

Cc626306.note(fr-fr,SQL.90).gifRemarque :
Les avertissements qui correspondent aux valeurs SQLSTATE 01000, 01001, 01003 et 01S02 ne sont jamais traités comme des erreurs. Quelle que soit la configuration, une fonction sqlsrv qui génère uniquement des avertissements correspondant à l'un de ces états ne retourne pas false.

La valeur de WarningsReturnAsErrors peut également être définie dans le fichier php.ini. Par exemple, cette entrée dans la section [sqlsrv] du fichier php.ini désactive le comportement par défaut.

sqlsrv.WarningsReturnAsErrors = 0

Pour plus d'informations sur la récupération des informations relatives aux erreurs et aux avertissements, consultez sqlsrv_errors et Procédure : gérer les erreurs et les avertissements.

Exemple

L'exemple de code suivant montre comment désactiver le comportement de gestion des erreurs par défaut. L'exemple utilise la commande Transact-SQL PRINT pour générer un avertissement. Pour plus d'informations sur la commande PRINT, consultez PRINT (Transact-SQL).

L'exemple illustre dans un premier temps le comportement de gestion des erreurs par défaut via l'exécution d'une requête qui génère un avertissement. Cet avertissement est traité comme une erreur. Dans un second temps, la même requête est exécutée après modification de la configuration de gestion des erreurs. Cet avertissement n'est pas traité comme une erreur.

L'exemple suppose que SQL Server est installé sur l'ordinateur local. Toutes les données de sortie sont écrites dans la console lorsque l'exemple est exécuté à partir de la ligne de commande.

<?php
/* Connect to the local server using Windows Authentication. */
$serverName = "(local)";
$conn = sqlsrv_connect( $serverName );
if( $conn === false )
{
     echo "Could not connect.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* The Transact-SQL PRINT statement can be used to return 
informational or warning messages*/
$tsql = "PRINT 'The PRINT statement can be used ";
$tsql .= "to return user-defined warnings.'";

/* Execute the query and print any errors. */
$stmt1 = sqlsrv_query( $conn, $tsql);
if($stmt1 === false)
{
     echo "By default, warnings are treated as errors:\n";
     /* Dump errors in the error collection. */
     print_r(sqlsrv_errors(SQLSRV_ERR_ERRORS));
}

/* Disable warnings as errors behavior. */
sqlsrv_configure("WarningsReturnAsErrors", 0);

/* Execute the same query and print any errors. */
$stmt2 = sqlsrv_query( $conn, $tsql);
if($stmt2 === false)
{
     /* Dump errors in the error collection. */
     /* Since the warning generated by the query will not be treated as 
        an error, this block of code will not be executed. */
     print_r(sqlsrv_errors(SQLSRV_ERR_ERRORS));
}
else
{
     echo "After calling ";
     echo "sqlsrv_configure('WarningsReturnAsErrors', 0), ";
     echo "warnings are not treated as errors.";
}

/*Close the connection. */
sqlsrv_close($conn);
?>

Voir aussi

Concepts

Journalisation de l'activité

Autres ressources

Guide de programmation
Référence de l'API (Pilote SQL Server pour PHP)