(No version information available, might be only in CVS)
sesam_diagnostic — Retourne l'état de la dernière requête SESAM
Retourne l'état de la dernière requête SESAM.
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) |
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
);
?>
sesam_errormsg() |