П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4459 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 7031 раз(а).

Учебник HTML.
Просмотров 3929 раз(а).

Руководство по PHP5.
Просмотров 318 раз(а).

Хостинг через призму DNS.
Просмотров 5176 раз(а).

Подборка текстов стандартных документов.
Просмотров 56500 раз(а).

Учебник PHP - Самоучитель
Просмотров 3978 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 9295 раз(а).

Внешние атаки...
Просмотров 4930 раз(а).

Учебник PHP.
Просмотров 3349 раз(а).

SSI в примерах.
Просмотров 347 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Учебник РНР
НазадВперёд

sesam_diagnostic

(только PHP 3 CVS)

sesam_diagnostic - возвращает информацию статуса последнего вызова SESAM.

Описание

array sesam_diagnostic (void)

Возвращает ассоциативный массив статуса и return-кодов последнего SQL query/statement/command. Элементами массива являются:

Таблица 1. Информация статуса, возвращаемая функцией sesam_diagnostic()
элементсодержимое
$array["sqlstate"] SQL return-код из 5 цифр (см. в учебнике SESAM описание возможных значений SQLSTATE)
$array["rowcount"]количество рядов, задействованных в последней операции update/insert/delete (устанавливается только после "immediate" операторов)
$array["errmsg"] "человекочитабельная" строка сообщения об ошибке (устанавливается только после ошибок)
$array["errcol"]Номер столбца с предыдущей ошибкой (с базой 0; или -1, если undefined. Устанавливается только после ошибок)
$array["errlin"] номер строчки с предыдущей ошибкой (с базой 0; или -1, еслиundefined. Устанавливается только после ошибок)

В следующем примере синтаксическая ошибка (E SEW42AE ILLEGAL CHARACTER) выводится путём включения бесконечного SQL-оператора и указания на местонахождение ошибки:
Пример 1. Отображение сообщений об ошибках SESAM с позицией ошибки
<?php
// Функция печатает отформатированное сообщение об ошибке и
// отображает указатель на синтаксическую ошибку в SQL-операторе
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>\n";
    echo "<TR><TH COLSPAN=".$colspan."><FONT COLOR=red>ERROR:</FONT> ".
	  	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 меньше или больше errlin
                if (!($i = strchr ($errstmt, "\n")))
                    $i = "";
                $line = substr ($errstmt, 0, strlen($errstmt)-strlen($i)+1);
                $errstmt = substr($i, 1);
                if ($line != "\n")
                    print 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 "<FONT COLOR=RED><BLINK>\\</BLINK></FONT>\n";
                print "<FONT COLOR=\"#880000\">".htmlspecialchars($line)."</FONT>";
                for ($col=0; $col < $err["errcol"]; ++$col)
                    echo (substr ($line, $col, 1) == "\t") ? "\t" : ".";
                echo "<FONT COLOR=RED><BLINK>/</BLINK></FONT>\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);
?>

См. также в sesam_errormsg() о простом доступе только к строке ошибки.


Назад Оглавление Вперёд
sesam_connect Вверхsesam_disconnect


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту: