Untitled Document

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

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
Платформу клиент-сервер | ActiveX-компоненты | Базы данных | Конструктор форм | Электро | ТОЭ | Linux | Интегралы | Лекции физика | Windows 2003 | Архитектура ЭВМ | Рисунок | Световые волны | Операционные системы
Pascal | Эксперт | Учебник Java | Кодирование | Пефирия ПК | Информатика | Сети | Моделирование | Язык SQL Расчет надежности | Задачи

Магазин телефонов. Z550i