Toms Homepage
  Home    Downloads    Your Account    Forums  
  Create an account
Modules
· Home
· Games
· PHP Manual
· PHP-Nuke HOWTO
 
sesam_diagnostic

sesam_diagnostic

(PHP 3 CVS only)

sesam_diagnostic --  Return status information for last SESAM call

Description

array sesam_diagnostic ( void )

Returns an associative array of status and return codes for the last SQL query/statement/command. Elements of the array are:

Table 1. Status information returned by sesam_diagnostic()

Element Contents
$array["sqlstate"] 5 digit SQL return code (see the SESAM manual for the description of the possible values of SQLSTATE)
$array["rowcount"] number of affected rows in last update/insert/delete (set after "immediate" statements only)
$array["errmsg"] "human readable" error message string (set after errors only)
$array["errcol"] error column number of previous error (0-based; or -1 if undefined. Set after errors only)
$array["errlin"] error line number of previous error (0-based; or -1 if undefined. Set after errors only)


In the following example, a syntax error (E SEW42AE ILLEGAL CHARACTER) is displayed by including the offending SQL statement and pointing to the error location:

Example 1. Displaying SESAM error messages with error position

<?php
// Function which prints a formatted error message,
// displaying a pointer to the syntax error in the
// SQL statement
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\">ERROR:</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 is less or greater than 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 (
"cannot connect");

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


See also: sesam_errormsg() for simple access to the error string only

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 2004 by Tom Nitzschner.
Web site engine code is Copyright © 2003 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Page Generation: 0.086 Seconds

:: VereorLCARS phpbb2 style by Vereor :: PHP-Nuke theme by www.nukemods.com ::