sesam_diagnostic

(No version information available, might be only in CVS)

sesam_diagnostic — Retourne l'état de la dernière requête SESAM

Description

array sesam_diagnostic ( void )

Retourne l'état de la dernière requête SESAM.

Valeurs de retour

Retourne un tableau associatif avec l'état et les codes de la dernière requête SQL. Les éléments du tableau sont :

Tableau 282.  Informations retournées par sesam_diagnostic()

Elément Contenu
$array["sqlstate"] code d'erreur à 5 chiffres (voir le manuel SESAM pour obtenir une description des valeurs possibles de SQLSTATE)
$array["rowcount"] nombre de lignes affectées dans la dernière requête immédiate (update/insert/delete) : uniquement après une requête immédiate
$array["errmsg"] message d'erreur lisible : uniquement après une erreur
$array["errcol"] numéro de colonne de la dernière erreur (indexée à partir de 0, -1 si indéfinies : uniquement après une erreur)
$array["errlin"] numéro de ligne de la dernière erreur (indexée à partir de 0, -1 si indéfinies : uniquement après une erreur)

Exemples

Dans l'exemple suivant, une erreur de syntaxe (E SEW42AE ILLEGAL CHARACTER) est affichée avec la requête SQL, et en désignant la position de l'erreur :

Exemple 2384. Afficher une erreur SESAM

<?php
// Fonction qui affiche un message d'erreur formaté
// en affichant la position de l'erreur dans le message d'erreur
function  PrintReturncode ( $exec_str )
{
    
$err  Sesam_Diagnostic ();
    
$colspan = 4 // 4 cols for: sqlstate, errlin, errcol, rowcount
    
if ( $err [ "errlin" ] == - 1 )
        --
$colspan ;
    if (
$err [ "errcol" ] == - 1 )
        --
$colspan ;
    if (
$err [ "rowcount" ] ==  0 )
        --
$colspan ;
    echo 
"<table border=\"1\">\n" ;
    echo 
"<tr><th colspan=\""  $colspan  "\"><span class=\"spanred\">ERREUR : </span> " .
         
htmlspecialchars ( $err [ "errmsg" ]) .  "</th></tr>\n" ;
    if (
$err [ "errcol" ] >=  0 ) {
        echo 
"<tr><td colspan=\""  $colspan  "\"><pre>\n" ;
        
$errstmt  $exec_str  "\n" ;
        for (
$lin = 0 $errstmt  !=  "" ; ++ $lin ) {
            if (
$lin  !=  $err [ "errlin" ]) {  // $lin est moins ou plus grand qu'errlin
                
if (!( $i  strchr ( $errstmt "\n" )))
                    
$i  "" ;
                
$line  substr  ( $errstmt 0 strlen ( $errstmt )- strlen ( $i )+ 1 );
                
$errstmt  substr ( $i 1 );
                if (
$line  !=  "\n" )
                    echo 
htmlspecialchars ( $line );
            } else {
                if (! (
$i  strchr  ( $errstmt "\n" )))
                    
$i  "" ;
                
$line  substr  ( $errstmt 0 strlen  ( $errstmt )- strlen ( $i )+ 1 );
                
$errstmt  substr ( $i 1 );
                for (
$col = 0 $col  $err [ "errcol" ]; ++ $col ) {
                    echo (
substr ( $line $col 1 ) ==  "\t" ) ?  "\t"  "." ;
                }
                echo 
"<span class=\"spanred\">\\</span>\n" ;
                echo 
"<span class=\"normal\">"  htmlspecialchars ( $line ) .  "</span>" ;
                for (
$col = 0 $col  $err [ "errcol" ]; ++ $col ) {
                    echo (
substr  ( $line $col 1 ) ==  "\t" ) ?  "\t"  "." ;
                }
                echo 
"<span class=\"spanred\">/</span>\n" ;
            }
        }
        echo 
"</pre></td></tr>\n" ;
    }
    echo 
"<tr>\n" ;
    echo 
" <td>sqlstate="  $err [ "sqlstate" ] .  "</td>\n" ;
    if (
$err [ "errlin" ] != - 1 )
        echo 
" <td>errlin="  $err [ "errlin" ] .  "</td>\n" ;
    if (
$err [ "errcol" ] != - 1 )
        echo 
" <td>errcol="  $err [ "errcol" ] .  "</td>\n" ;
    if (
$err [ "rowcount" ] !=  0 )
         echo 
" <td>rowcount="  $err [ "rowcount" ] .  "</td>\n" ;
    echo 
"</tr>\n" ;
    echo 
"</table>\n" ;
}

if (!
sesam_connect  ( "mycatalog" "phoneno" "otto" ))
  die (
"Connexion impossible" );

$stmt  "SELECT * FROM phone\n"  .
        
" WHERE@ LASTNAME='KRAEMER'\n"  .
        
" ORDER BY FIRSTNAME" ;
if (!(
$result  sesam_query  ( $stmt )))
    
PrintReturncode  ( $stmt );
?>

Voir aussi

sesam_errormsg()