<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >sesam_diagnostic</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="PHP 手册" HREF="index.html"><LINK REL="UP" TITLE="SESAM Database Functions" HREF="ref.sesam.html"><LINK REL="PREVIOUS" TITLE="sesam_connect" HREF="function.sesam-connect.html"><LINK REL="NEXT" TITLE="sesam_disconnect" HREF="function.sesam-disconnect.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="refentry" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >PHP 手册</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="function.sesam-connect.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="function.sesam-disconnect.html" ACCESSKEY="N" >下一页</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="function.sesam-diagnostic" ></A >sesam_diagnostic</H1 ><DIV CLASS="refnamediv" ><A NAME="AEN206413" ></A ><P > (PHP 3 CVS only)</P >sesam_diagnostic -- Return status information for last SESAM call</DIV ><DIV CLASS="refsect1" ><A NAME="AEN206416" ></A ><H2 >说明</H2 >array <B CLASS="methodname" >sesam_diagnostic</B > ( void )<BR ></BR ><P > Returns status information for last SESAM call. </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN206423" ></A ><H2 >返回值</H2 ><P > Returns an associative array of status and return codes for the last SQL query/statement/command. Elements of the array are: <DIV CLASS="table" ><A NAME="AEN206426" ></A ><P ><B >表 1. Status information returned by <B CLASS="function" >sesam_diagnostic()</B > </B ></P ><TABLE BORDER="1" CLASS="CALSTABLE" ><COL><COL><THEAD ><TR ><TH >Element</TH ><TH >Contents</TH ></TR ></THEAD ><TBODY ><TR ><TD >$array["sqlstate"]</TD ><TD > 5 digit SQL return code (see the SESAM manual for the description of the possible values of SQLSTATE) </TD ></TR ><TR ><TD >$array["rowcount"]</TD ><TD > number of affected rows in last update/insert/delete (set after "immediate" statements only) </TD ></TR ><TR ><TD >$array["errmsg"]</TD ><TD > "human readable" error message string (set after errors only) </TD ></TR ><TR ><TD >$array["errcol"]</TD ><TD > error column number of previous error (0-based; or -1 if undefined. Set after errors only) </TD ></TR ><TR ><TD >$array["errlin"]</TD ><TD > error line number of previous error (0-based; or -1 if undefined. Set after errors only) </TD ></TR ></TBODY ></TABLE ></DIV > </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN206450" ></A ><H2 >范例</H2 ><P > 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: <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN206453" ></A ><P ><B >例 1. Displaying SESAM error messages with error position</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /></font><font color="#FF8000">// Function which prints a formatted error message,<br />// displaying a pointer to the syntax error in the<br />// SQL statement<br /></font><font color="#007700">function </font><font color="#0000BB">PrintReturncode</font><font color="#007700">(</font><font color="#0000BB">$exec_str</font><font color="#007700">)<br />{<br /> </font><font color="#0000BB">$err </font><font color="#007700">= </font><font color="#0000BB">Sesam_Diagnostic</font><font color="#007700">();<br /> </font><font color="#0000BB">$colspan</font><font color="#007700">=</font><font color="#0000BB">4</font><font color="#007700">; </font><font color="#FF8000">// 4 cols for: sqlstate, errlin, errcol, rowcount<br /> </font><font color="#007700">if (</font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errlin"</font><font color="#007700">] == -</font><font color="#0000BB">1</font><font color="#007700">)<br /> --</font><font color="#0000BB">$colspan</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errcol"</font><font color="#007700">] == -</font><font color="#0000BB">1</font><font color="#007700">)<br /> --</font><font color="#0000BB">$colspan</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"rowcount"</font><font color="#007700">] == </font><font color="#0000BB">0</font><font color="#007700">)<br /> --</font><font color="#0000BB">$colspan</font><font color="#007700">;<br /> echo </font><font color="#DD0000">"<table border=\"1\">\n"</font><font color="#007700">;<br /> echo </font><font color="#DD0000">"<tr><th colspan=\"" </font><font color="#007700">. </font><font color="#0000BB">$colspan </font><font color="#007700">. </font><font color="#DD0000">"\"><span class=\"spanred\">ERROR:</span> "</font><font color="#007700">.<br /> </font><font color="#0000BB">htmlspecialchars</font><font color="#007700">(</font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errmsg"</font><font color="#007700">]) . </font><font color="#DD0000">"</th></tr>\n"</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errcol"</font><font color="#007700">] >= </font><font color="#0000BB">0</font><font color="#007700">) {<br /> echo </font><font color="#DD0000">"<tr><td colspan=\"" </font><font color="#007700">. </font><font color="#0000BB">$colspan </font><font color="#007700">. </font><font color="#DD0000">"\"><pre>\n"</font><font color="#007700">;<br /> </font><font color="#0000BB">$errstmt </font><font color="#007700">= </font><font color="#0000BB">$exec_str </font><font color="#007700">. </font><font color="#DD0000">"\n"</font><font color="#007700">;<br /> for (</font><font color="#0000BB">$lin</font><font color="#007700">=</font><font color="#0000BB">0</font><font color="#007700">; </font><font color="#0000BB">$errstmt </font><font color="#007700">!= </font><font color="#DD0000">""</font><font color="#007700">; ++</font><font color="#0000BB">$lin</font><font color="#007700">) {<br /> if (</font><font color="#0000BB">$lin </font><font color="#007700">!= </font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errlin"</font><font color="#007700">]) { </font><font color="#FF8000">// $lin is less or greater than errlin<br /> </font><font color="#007700">if (!(</font><font color="#0000BB">$i </font><font color="#007700">= </font><font color="#0000BB">strchr</font><font color="#007700">(</font><font color="#0000BB">$errstmt</font><font color="#007700">, </font><font color="#DD0000">"\n"</font><font color="#007700">)))<br /> </font><font color="#0000BB">$i </font><font color="#007700">= </font><font color="#DD0000">""</font><font color="#007700">;<br /> </font><font color="#0000BB">$line </font><font color="#007700">= </font><font color="#0000BB">substr </font><font color="#007700">(</font><font color="#0000BB">$errstmt</font><font color="#007700">, </font><font color="#0000BB">0</font><font color="#007700">, </font><font color="#0000BB">strlen</font><font color="#007700">(</font><font color="#0000BB">$errstmt</font><font color="#007700">)-</font><font color="#0000BB">strlen</font><font color="#007700">(</font><font color="#0000BB">$i</font><font color="#007700">)+</font><font color="#0000BB">1</font><font color="#007700">);<br /> </font><font color="#0000BB">$errstmt </font><font color="#007700">= </font><font color="#0000BB">substr</font><font color="#007700">(</font><font color="#0000BB">$i</font><font color="#007700">, </font><font color="#0000BB">1</font><font color="#007700">);<br /> if (</font><font color="#0000BB">$line </font><font color="#007700">!= </font><font color="#DD0000">"\n"</font><font color="#007700">)<br /> echo </font><font color="#0000BB">htmlspecialchars</font><font color="#007700">(</font><font color="#0000BB">$line</font><font color="#007700">);<br /> } else {<br /> if (! (</font><font color="#0000BB">$i </font><font color="#007700">= </font><font color="#0000BB">strchr </font><font color="#007700">(</font><font color="#0000BB">$errstmt</font><font color="#007700">, </font><font color="#DD0000">"\n"</font><font color="#007700">)))<br /> </font><font color="#0000BB">$i </font><font color="#007700">= </font><font color="#DD0000">""</font><font color="#007700">;<br /> </font><font color="#0000BB">$line </font><font color="#007700">= </font><font color="#0000BB">substr </font><font color="#007700">(</font><font color="#0000BB">$errstmt</font><font color="#007700">, </font><font color="#0000BB">0</font><font color="#007700">, </font><font color="#0000BB">strlen </font><font color="#007700">(</font><font color="#0000BB">$errstmt</font><font color="#007700">)-</font><font color="#0000BB">strlen</font><font color="#007700">(</font><font color="#0000BB">$i</font><font color="#007700">)+</font><font color="#0000BB">1</font><font color="#007700">);<br /> </font><font color="#0000BB">$errstmt </font><font color="#007700">= </font><font color="#0000BB">substr</font><font color="#007700">(</font><font color="#0000BB">$i</font><font color="#007700">, </font><font color="#0000BB">1</font><font color="#007700">);<br /> for (</font><font color="#0000BB">$col</font><font color="#007700">=</font><font color="#0000BB">0</font><font color="#007700">; </font><font color="#0000BB">$col </font><font color="#007700">< </font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errcol"</font><font color="#007700">]; ++</font><font color="#0000BB">$col</font><font color="#007700">) {<br /> echo (</font><font color="#0000BB">substr</font><font color="#007700">(</font><font color="#0000BB">$line</font><font color="#007700">, </font><font color="#0000BB">$col</font><font color="#007700">, </font><font color="#0000BB">1</font><font color="#007700">) == </font><font color="#DD0000">"\t"</font><font color="#007700">) ? </font><font color="#DD0000">"\t" </font><font color="#007700">: </font><font color="#DD0000">"."</font><font color="#007700">;<br /> }<br /> echo </font><font color="#DD0000">"<span class=\"spanred\">\\</span>\n"</font><font color="#007700">;<br /> echo </font><font color="#DD0000">"<span class=\"normal\">" </font><font color="#007700">. </font><font color="#0000BB">htmlspecialchars</font><font color="#007700">(</font><font color="#0000BB">$line</font><font color="#007700">) . </font><font color="#DD0000">"</span>"</font><font color="#007700">;<br /> for (</font><font color="#0000BB">$col</font><font color="#007700">=</font><font color="#0000BB">0</font><font color="#007700">; </font><font color="#0000BB">$col </font><font color="#007700">< </font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errcol"</font><font color="#007700">]; ++</font><font color="#0000BB">$col</font><font color="#007700">) {<br /> echo (</font><font color="#0000BB">substr </font><font color="#007700">(</font><font color="#0000BB">$line</font><font color="#007700">, </font><font color="#0000BB">$col</font><font color="#007700">, </font><font color="#0000BB">1</font><font color="#007700">) == </font><font color="#DD0000">"\t"</font><font color="#007700">) ? </font><font color="#DD0000">"\t" </font><font color="#007700">: </font><font color="#DD0000">"."</font><font color="#007700">;<br /> }<br /> echo </font><font color="#DD0000">"<span class=\"spanred\">/</span>\n"</font><font color="#007700">;<br /> }<br /> }<br /> echo </font><font color="#DD0000">"</pre></td></tr>\n"</font><font color="#007700">;<br /> }<br /> echo </font><font color="#DD0000">"<tr>\n"</font><font color="#007700">;<br /> echo </font><font color="#DD0000">" <td>sqlstate=" </font><font color="#007700">. </font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"sqlstate"</font><font color="#007700">] . </font><font color="#DD0000">"</td>\n"</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errlin"</font><font color="#007700">] != -</font><font color="#0000BB">1</font><font color="#007700">)<br /> echo </font><font color="#DD0000">" <td>errlin=" </font><font color="#007700">. </font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errlin"</font><font color="#007700">] . </font><font color="#DD0000">"</td>\n"</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errcol"</font><font color="#007700">] != -</font><font color="#0000BB">1</font><font color="#007700">)<br /> echo </font><font color="#DD0000">" <td>errcol=" </font><font color="#007700">. </font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"errcol"</font><font color="#007700">] . </font><font color="#DD0000">"</td>\n"</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"rowcount"</font><font color="#007700">] != </font><font color="#0000BB">0</font><font color="#007700">)<br /> echo </font><font color="#DD0000">" <td>rowcount=" </font><font color="#007700">. </font><font color="#0000BB">$err</font><font color="#007700">[</font><font color="#DD0000">"rowcount"</font><font color="#007700">] . </font><font color="#DD0000">"</td>\n"</font><font color="#007700">;<br /> echo </font><font color="#DD0000">"</tr>\n"</font><font color="#007700">;<br /> echo </font><font color="#DD0000">"</table>\n"</font><font color="#007700">;<br />}<br /><br />if (!</font><font color="#0000BB">sesam_connect </font><font color="#007700">(</font><font color="#DD0000">"mycatalog"</font><font color="#007700">, </font><font color="#DD0000">"phoneno"</font><font color="#007700">, </font><font color="#DD0000">"otto"</font><font color="#007700">))<br /> die (</font><font color="#DD0000">"cannot connect"</font><font color="#007700">);<br /><br /></font><font color="#0000BB">$stmt </font><font color="#007700">= </font><font color="#DD0000">"SELECT * FROM phone\n" </font><font color="#007700">.<br /> </font><font color="#DD0000">" WHERE@ LASTNAME='KRAEMER'\n" </font><font color="#007700">.<br /> </font><font color="#DD0000">" ORDER BY FIRSTNAME"</font><font color="#007700">;<br />if (!(</font><font color="#0000BB">$result </font><font color="#007700">= </font><font color="#0000BB">sesam_query </font><font color="#007700">(</font><font color="#0000BB">$stmt</font><font color="#007700">)))<br /> </font><font color="#0000BB">PrintReturncode </font><font color="#007700">(</font><font color="#0000BB">$stmt</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN206456" ></A ><H2 >参见</H2 ><P > <P ></P ><TABLE BORDER="0" ><TBODY ><TR ><TD ><A HREF="function.sesam-errormsg.html" ><B CLASS="function" >sesam_errormsg()</B ></A ></TD ></TR ></TBODY ></TABLE ><P ></P > </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="function.sesam-connect.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >起始页</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="function.sesam-disconnect.html" ACCESSKEY="N" >下一页</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >sesam_connect</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="ref.sesam.html" ACCESSKEY="U" >上一级</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >sesam_disconnect</TD ></TR ></TABLE ></DIV ></BODY ></HTML >