<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>睡到25点 &#187; SQL Server</title>
	<atom:link href="http://www.voidman.com/tag/sql-server/feed" rel="self" type="application/rss+xml" />
	<link>http://www.voidman.com</link>
	<description>个人博客，记录与分享，仅此而已。</description>
	<lastBuildDate>Fri, 30 Jul 2010 09:54:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>JScript 仿 PHP 操作 SQL Server</title>
		<link>http://www.voidman.com/2006/01/jscript-dbclass-for-sql-server-php-style.html</link>
		<comments>http://www.voidman.com/2006/01/jscript-dbclass-for-sql-server-php-style.html#comments</comments>
		<pubDate>Fri, 13 Jan 2006 06:30:25 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[JScript]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.voidman.com/2008/02/jscript-dbclass-for-sql-server-php-style/</guid>
		<description><![CDATA[原先在php下写了个操作数据库的类，用jscript又重写了一遍。 // Sample var db = new dbstuff&#40;&#41;; db.connect&#40;dbserver, dbuser, dbpwd, dbname&#41;; &#160; var sql = &#34;SELECT @@VERSION as dbv&#34;; var query = db.query&#40;sql&#41;; while&#40;arr = db.fetch_array&#40;query&#41;&#41;&#123; echo&#40;arr&#91;&#34;dbv&#34;&#93;&#41;; &#125; db.close&#40;&#41;; function dbstuff&#40;&#41;&#123; /////////////////// // Attributes /////////////////// // Private var conn = Server.CreateObject&#40;&#34;ADODB.Connection&#34;&#41;; // Public this.state = false; this.recordcount = -1; this.querynum = 0; /////////////////// // [...]]]></description>
			<content:encoded><![CDATA[<p>原先在php下写了个操作数据库的类，用jscript又重写了一遍。</p>

<div class="wp_syntax"><pre class="javascript"><span style="color: #008000; font-style: italic;">// Sample</span>
<span style="color: blue;">var</span> db = <span style="color: blue;">new</span> dbstuff<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
db.<span style="">connect</span><span style="color: #800000;">&#40;</span>dbserver, dbuser, dbpwd, dbname<span style="color: #800000;">&#41;</span>;
&nbsp;
<span style="color: blue;">var</span> sql = <span style="color: #ff00ff;">&quot;SELECT @@VERSION as dbv&quot;</span>;
<span style="color: blue;">var</span> query = db.<span style="">query</span><span style="color: #800000;">&#40;</span>sql<span style="color: #800000;">&#41;</span>;
<span style="color: blue;">while</span><span style="color: #800000;">&#40;</span>arr = db.<span style="">fetch_array</span><span style="color: #800000;">&#40;</span>query<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
  echo<span style="color: #800000;">&#40;</span>arr<span style="color: #800000;">&#91;</span><span style="color: #ff00ff;">&quot;dbv&quot;</span><span style="color: #800000;">&#93;</span><span style="color: #800000;">&#41;</span>;
<span style="color: #800000;">&#125;</span>
db.<span style="">close</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;</pre></div>

<p><span id="more-128"></span></p>

<div class="wp_syntax"><pre class="javascript"><span style="color: blue;">function</span> dbstuff<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
  <span style="color: #008000; font-style: italic;">///////////////////</span>
  <span style="color: #008000; font-style: italic;">// Attributes</span>
  <span style="color: #008000; font-style: italic;">///////////////////</span>
  <span style="color: #008000; font-style: italic;">// Private</span>
  <span style="color: blue;">var</span> conn = Server.<span style="">CreateObject</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;ADODB.Connection&quot;</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #008000; font-style: italic;">// Public</span>
  <span style="color: blue;">this</span>.<span style="">state</span> = <span style="color: blue;">false</span>;
  <span style="color: blue;">this</span>.<span style="">recordcount</span> = <span style="color: #800080;">-1</span>;
  <span style="color: blue;">this</span>.<span style="">querynum</span> = <span style="color: #800080;">0</span>;
  <span style="color: #008000; font-style: italic;">///////////////////</span>
  <span style="color: #008000; font-style: italic;">// Methods</span>
  <span style="color: #008000; font-style: italic;">///////////////////</span>
  <span style="color: #008000; font-style: italic;">// Open a new connection to the MSSQL server</span>
  <span style="color: blue;">this</span>.<span style="">connect</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>dbserver, dbuser, dbpwd, dbname<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: blue;">this</span>.<span style="">state</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        conn.<span style="">Close</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
        <span style="color: blue;">this</span>.<span style="">state</span> = <span style="color: blue;">false</span>;
      <span style="color: #800000;">&#125;</span>
      conn.<span style="">CommandTimeout</span> = <span style="color: #800080;">180</span>;
      conn.<span style="">ConnectionString</span> = <span style="color: #ff00ff;">&quot;Provider=SQLOLEDB; Data Source=&quot;</span>+dbserver+<span style="color: #ff00ff;">&quot;; UID=&quot;</span>+dbuser+<span style="color: #ff00ff;">&quot;; PWD=&quot;</span>+dbpwd+<span style="color: #ff00ff;">&quot;;Initial Catalog=&quot;</span>+dbname;
      conn.<span style="">Open</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Can not connect to Database Server.&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">this</span>.<span style="">state</span> = <span style="color: blue;">true</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Performs a query on the database</span>
  <span style="color: blue;">this</span>.<span style="">query</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>sql<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">var</span> query = conn.<span style="">Execute</span><span style="color: #800000;">&#40;</span>sql<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Database Query Error.&quot;</span>, e, sql<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">this</span>.<span style="">querynum</span>++;
    <span style="color: blue;">return</span> query;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch a result row as an associative array</span>
  <span style="color: blue;">this</span>.<span style="">fetch_array</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>rs, freeresult<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">State</span> != <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Fetch Data Error.&quot;</span>, e<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!rs.<span style="">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">var</span> arr = <span style="color: blue;">new</span> Array<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">var</span> colums = rs.<span style="">Fields</span>.<span style="">Count</span>;
      <span style="color: blue;">var</span> i, fld;
      <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span>i=<span style="color: #800080;">0</span>; i &lt; colums; i++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        arr<span style="color: #800000;">&#91;</span>rs.<span style="">Fields</span><span style="color: #800000;">&#40;</span>i<span style="color: #800000;">&#41;</span>.<span style="">Name</span>.<span style="">toLowerCase</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#93;</span> = rs.<span style="">Fields</span><span style="color: #800000;">&#40;</span>i<span style="color: #800000;">&#41;</span>.<span style="">Value</span>;
      <span style="color: #800000;">&#125;</span>
      rs.<span style="">MoveNext</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">return</span> arr;
    <span style="color: #800000;">&#125;</span><span style="color: blue;">else</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>freeresult == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        <span style="color: blue;">this</span>.<span style="">free_result</span><span style="color: #800000;">&#40;</span>rs<span style="color: #800000;">&#41;</span>;
      <span style="color: #800000;">&#125;</span>
      <span style="color: blue;">return</span> <span style="color: blue;">false</span>;
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch a result row as enumerated array</span>
  <span style="color: blue;">this</span>.<span style="">fetch_row</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>rs, freeresult<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">State</span> != <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Fetch Data Error.&quot;</span>, e<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!rs.<span style="">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">var</span> arr = <span style="color: blue;">new</span> Array<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">var</span> colums = rs.<span style="">Fields</span>.<span style="">Count</span>;
      <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span><span style="color: blue;">var</span> i=<span style="color: #800080;">0</span>; i &lt; colums; i++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        arr<span style="color: #800000;">&#91;</span>i<span style="color: #800000;">&#93;</span> = rs.<span style="">Fields</span><span style="color: #800000;">&#40;</span>i<span style="color: #800000;">&#41;</span>.<span style="">Value</span>;
      <span style="color: #800000;">&#125;</span>
      rs.<span style="">MoveNext</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">return</span> arr;
    <span style="color: #800000;">&#125;</span><span style="color: blue;">else</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>freeresult == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        <span style="color: blue;">this</span>.<span style="">free_result</span><span style="color: #800000;">&#40;</span>rs<span style="color: #800000;">&#41;</span>;
      <span style="color: #800000;">&#125;</span>
      <span style="color: blue;">return</span> <span style="color: blue;">false</span>;
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch all result rows as associative array </span>
  <span style="color: blue;">this</span>.<span style="">fetch_all</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>rs, freeresult<span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">State</span> != <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Fetch Data Error.&quot;</span>, e<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">var</span> arr = <span style="color: blue;">new</span> Array<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">var</span> colums = rs.<span style="">Fields</span>.<span style="">Count</span>;
    <span style="color: blue;">var</span> rows = <span style="color: #800080;">0</span>;
    <span style="color: blue;">var</span> i;
    <span style="color: blue;">while</span><span style="color: #800000;">&#40;</span>!rs.<span style="">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      arr<span style="color: #800000;">&#91;</span>rows<span style="color: #800000;">&#93;</span> = <span style="color: blue;">new</span> Array<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span>i=<span style="color: #800080;">0</span>; i &lt; colums; i++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        arr<span style="color: #800000;">&#91;</span>rows<span style="color: #800000;">&#93;</span><span style="color: #800000;">&#91;</span>rs.<span style="">Fields</span><span style="color: #800000;">&#40;</span>i<span style="color: #800000;">&#41;</span>.<span style="">Name</span>.<span style="">toLowerCase</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#93;</span> = rs.<span style="">Fields</span><span style="color: #800000;">&#40;</span>i<span style="color: #800000;">&#41;</span>.<span style="">Value</span>;
      <span style="color: #800000;">&#125;</span>
      rows++;
      rs.<span style="">MoveNext</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>freeresult == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">this</span>.<span style="">free_result</span><span style="color: #800000;">&#40;</span>rs<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">return</span> arr;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Open recordset</span>
  <span style="color: blue;">this</span>.<span style="">recordset</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>sql, cursortype, locktype<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>cursortype == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>cursortype = <span style="color: #800080;">3</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>locktype == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>locktype = <span style="color: #800080;">3</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">var</span> rs = Server.<span style="">CreateObject</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;ADODB.RecordSet&quot;</span><span style="color: #800000;">&#41;</span>;
      rs.<span style="">CursorLocation</span> = <span style="color: #800080;">3</span>;
      rs.<span style="">Open</span><span style="color: #800000;">&#40;</span>sql, conn, cursortype, locktype<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Database Query Error.&quot;</span>, e, sql<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">this</span>.<span style="">querynum</span>++;
    <span style="color: blue;">return</span> rs;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch all result rows in one page as associative array </span>
  <span style="color: blue;">this</span>.<span style="">fetch_page</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>sql, pagesize, curpage, cursortype, locktype<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>pagesize == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>pagesize = <span style="color: #800080;">20</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>curpage == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>curpage = <span style="color: #800080;">1</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>cursortype == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>cursortype = <span style="color: #800080;">3</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>locktype == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>locktype = <span style="color: #800080;">3</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">var</span> rs = Server.<span style="">CreateObject</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;ADODB.RecordSet&quot;</span><span style="color: #800000;">&#41;</span>;
      rs.<span style="">CursorLocation</span> = <span style="color: #800080;">3</span>;
      rs.<span style="">CacheSize</span> = pagesize;
      rs.<span style="">Open</span><span style="color: #800000;">&#40;</span>sql, conn, cursortype, locktype<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Database Query Error.&quot;</span>, e, sql<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">this</span>.<span style="">querynum</span>++;
&nbsp;
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">State</span> != <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">return</span> <span style="color: blue;">false</span>;
    <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">EOF</span> &amp;&amp; rs.<span style="">BOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">this</span>.<span style="">recordcount</span> = <span style="color: #800080;">0</span>;
      <span style="color: blue;">return</span> <span style="color: blue;">false</span>;
    <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: #800000;">&#123;</span>
      <span style="color: blue;">this</span>.<span style="">recordcount</span> = rs.<span style="">recordcount</span>;
      rs.<span style="">PageSize</span> = pagesize;
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!curpage<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        curpage = <span style="color: #800080;">1</span>;
      <span style="color: #800000;">&#125;</span><span style="color: blue;">else</span> <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>curpage &gt; rs.<span style="">PageCount</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        curpage = rs.<span style="">PageCount</span>;
      <span style="color: #800000;">&#125;</span>
      rs.<span style="">AbsolutePage</span> = curpage;
      <span style="color: blue;">var</span> arr = <span style="color: blue;">new</span> Array<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">var</span> colums = rs.<span style="">Fields</span>.<span style="">Count</span>;
      <span style="color: blue;">var</span> i,j;
      <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span>i=<span style="color: #800080;">0</span>; i&lt; pagesize; i++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        arr<span style="color: #800000;">&#91;</span>i<span style="color: #800000;">&#93;</span> = <span style="color: blue;">new</span> Array<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
        <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span>j=<span style="color: #800080;">0</span>; j &lt; colums; j++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
          arr<span style="color: #800000;">&#91;</span>i<span style="color: #800000;">&#93;</span><span style="color: #800000;">&#91;</span>rs.<span style="">Fields</span><span style="color: #800000;">&#40;</span>j<span style="color: #800000;">&#41;</span>.<span style="">Name</span>.<span style="">toLowerCase</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#93;</span> = rs.<span style="">Fields</span><span style="color: #800000;">&#40;</span>j<span style="color: #800000;">&#41;</span>.<span style="">Value</span>;
        <span style="color: #800000;">&#125;</span>
        rs.<span style="">MoveNext</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
        <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">break</span>;<span style="color: #800000;">&#125;</span>
      <span style="color: #800000;">&#125;</span>
      <span style="color: blue;">this</span>.<span style="">free_result</span><span style="color: #800000;">&#40;</span>rs<span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">return</span> arr;
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch one field value of a result row</span>
  <span style="color: blue;">this</span>.<span style="">result</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>rs, row, mixedfld, freeresult<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs == undefined<span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">State</span> != <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Fetch Data Error.&quot;</span>, e<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>row == undefined<span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>row = <span style="color: #800080;">0</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>mixedfld == undefined<span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>mixedfld = <span style="color: #800080;">0</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>freeresult == undefined<span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
      freeresult = <span style="color: blue;">true</span>;
    <span style="color: #800000;">&#125;</span><span style="color: blue;">else</span><span style="color: #800000;">&#123;</span>
      freeresult = <span style="color: blue;">false</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">this</span>.<span style="">free_result</span><span style="color: #800000;">&#40;</span>rs<span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">return</span> <span style="color: blue;">false</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>row<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>rs.<span style="">Move</span><span style="color: #800000;">&#40;</span>row<span style="color: #800000;">&#41;</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">var</span> returnvalue = rs.<span style="">Fields</span><span style="color: #800000;">&#40;</span>mixedfld<span style="color: #800000;">&#41;</span>.<span style="">value</span>;
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>freeresult<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">this</span>.<span style="">free_result</span><span style="color: #800000;">&#40;</span>rs<span style="color: #800000;">&#41;</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">return</span> returnvalue;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the number of rows in a result</span>
  <span style="color: blue;">this</span>.<span style="">num_rows</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>rs<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs == undefined<span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">State</span> != <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Fetch Data Error.&quot;</span>, e<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">return</span> rs.<span style="">RecordCount</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the number of fields in a result </span>
  <span style="color: blue;">this</span>.<span style="">num_fields</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>rs<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs == undefined<span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">State</span> != <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span> <span style="color: blue;">false</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Fetch Data Error.&quot;</span>, e<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">return</span> rs.<span style="">Fields</span>.<span style="">Count</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the auto generated id used in the last query</span>
  <span style="color: blue;">this</span>.<span style="">insert_id</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    query = <span style="color: blue;">this</span>.<span style="">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;SELECT @@IDENTITY&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: blue;">this</span>.<span style="">result</span><span style="color: #800000;">&#40;</span>query<span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the number of affected rows in a previous SQL operation</span>
  <span style="color: #008000; font-style: italic;">// It should be called immediately after a SQL operation</span>
  <span style="color: blue;">this</span>.<span style="">affected_rows</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    query = <span style="color: blue;">this</span>.<span style="">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;SELECT @@ROWCOUNT&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: blue;">this</span>.<span style="">result</span><span style="color: #800000;">&#40;</span>query<span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
  <span style="color: #008000; font-style: italic;">// Get the mssql version</span>
  <span style="color: blue;">this</span>.<span style="">version</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    query = <span style="color: blue;">this</span>.<span style="">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;SELECT @@VERSION&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: blue;">this</span>.<span style="">result</span><span style="color: #800000;">&#40;</span>query<span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
  <span style="color: #008000; font-style: italic;">// Release resource</span>
  <span style="color: blue;">this</span>.<span style="">free_result</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span>rs<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span><span style="color: blue;">return</span>;<span style="color: #800000;">&#125;</span>
    <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>rs.<span style="">State</span> == <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        rs.<span style="">Close</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: #800000;">&#125;</span>
      rs = <span style="color: blue;">null</span>;
    <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Close RecordSet Error.&quot;</span>, e<span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
  <span style="color: #008000; font-style: italic;">// Close db connection</span>
  <span style="color: blue;">this</span>.<span style="">close</span> = <span style="color: blue;">function</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: blue;">this</span>.<span style="">state</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">try</span><span style="color: #800000;">&#123;</span>
        conn.<span style="">Close</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
        conn = <span style="color: blue;">null</span>;
      <span style="color: #800000;">&#125;</span><span style="color: blue;">catch</span><span style="color: #800000;">&#40;</span>e<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        die<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Close Database Connection Error.&quot;</span>, e<span style="color: #800000;">&#41;</span>;
      <span style="color: #800000;">&#125;</span>
      <span style="color: blue;">this</span>.<span style="">state</span> = <span style="color: blue;">false</span>;
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
<span style="color: #800000;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic;">///////////////////</span>
&nbsp;
<span style="color: blue;">function</span> echo<span style="color: #800000;">&#40;</span>str<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
  Response.<span style="color: blue;">Write</span><span style="color: #800000;">&#40;</span>str+<span style="color: #ff00ff;">&quot;<span style="">\n</span>&quot;</span><span style="color: #800000;">&#41;</span>;
<span style="color: #800000;">&#125;</span>
&nbsp;
<span style="color: blue;">function</span> die<span style="color: #800000;">&#40;</span>errmsg, err<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
  Response.<span style="">Clear</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
  Response.<span style="">CharSet</span> = <span style="color: #ff00ff;">&quot;utf-8&quot;</span>;
  <span style="color: #008000; font-style: italic;">// error message</span>
  <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>errmsg == undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>errmsg=<span style="color: #ff00ff;">&quot;&quot;</span>;<span style="color: #800000;">&#125;</span>
  <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>errmsg<span style="color: #800000;">&#41;</span> echo<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;&lt;p&gt;&quot;</span>+errmsg+<span style="color: #ff00ff;">&quot;&lt;/p&gt;&quot;</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #008000; font-style: italic;">// error detail</span>
  <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>err != undefined<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>err.<span style="">constructor</span> == Error<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      echo<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;&lt;p&gt;Error Number: &quot;</span> + String<span style="color: #800000;">&#40;</span>err.<span style="">number</span> &amp; 0xFFFF<span style="color: #800000;">&#41;</span> + <span style="color: #ff00ff;">&quot;&lt;/p&gt;<span style="">\n</span>&lt;p&gt;Error Detail: &quot;</span>+err.<span style="">description</span>+<span style="color: #ff00ff;">&quot;&lt;/p&gt;&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
&nbsp;
  Response.<span style="">End</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
<span style="color: #800000;">&#125;</span></pre></div>

<h4>Related Posts</h4><ul class="related_post"><li><a href="http://www.voidman.com/2005/11/php-operate-sql-server.html" title="PHP 操作 SQL Server">PHP 操作 SQL Server</a></li><li><a href="http://www.voidman.com/2004/12/recording-operation-automatically.html" title="自动记录操作日志">自动记录操作日志</a></li></ul><hr /><a href="http://www.voidman.com">Voidman.com</a> | Link: <a href="http://www.voidman.com/2006/01/jscript-dbclass-for-sql-server-php-style.html">http://www.voidman.com/2006/01/jscript-dbclass-for-sql-server-php-style.html</a><br /><img alt="linezing" width="1" height="1" src="http://img.tongji.linezing.com/288120/tongji.gif" />]]></content:encoded>
			<wfw:commentRss>http://www.voidman.com/2006/01/jscript-dbclass-for-sql-server-php-style.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 操作 SQL Server</title>
		<link>http://www.voidman.com/2005/11/php-operate-sql-server.html</link>
		<comments>http://www.voidman.com/2005/11/php-operate-sql-server.html#comments</comments>
		<pubDate>Sun, 20 Nov 2005 11:14:16 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.voidman.com/?p=152</guid>
		<description><![CDATA[adodb 实在太庞大了，况且也不需要那么多的功能，就自己写了一个 PHP 操作 SQL Server 的类。带有强烈的 discuz 风格。 // sample $db = new dbstuff; $db-&#62;connect&#40;$dbserver, $dbuser, $dbpwd, $dbname, $codepage&#41;; class dbstuff &#123; /////////////////// // Attributes /////////////////// &#160; var $conn; var $exectimeout = 180; var $codepage; // Connection status: 1=&#62;opened, 0=&#62;closed var $state = 0; var $querynum = 0; var $recordcount = 0; // save [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adodb.sourceforge.net/" rel="external nofollow">adodb</a> 实在太庞大了，况且也不需要那么多的功能，就自己写了一个 PHP 操作 SQL Server 的类。带有强烈的 discuz 风格。</p>

<div class="wp_syntax"><pre class="php"><span style="color: #008000; font-style: italic;">// sample</span>
<span style="color: #008080;">$db</span> = <span style="color: blue;">new</span> dbstuff;
<span style="color: #008080;">$db</span>-&gt;<span style="color: #006600;">connect</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$dbserver</span>, <span style="color: #008080;">$dbuser</span>, <span style="color: #008080;">$dbpwd</span>, <span style="color: #008080;">$dbname</span>, <span style="color: #008080;">$codepage</span><span style="color: #800000;">&#41;</span>;</pre></div>

<p><span id="more-152"></span></p>

<div class="wp_syntax"><pre class="php"><span style="color: blue;">class</span> dbstuff <span style="color: #800000;">&#123;</span>
  <span style="color: #008000; font-style: italic;">///////////////////</span>
  <span style="color: #008000; font-style: italic;">// Attributes</span>
  <span style="color: #008000; font-style: italic;">///////////////////</span>
&nbsp;
  <span style="color: blue;">var</span> <span style="color: #008080;">$conn</span>;
  <span style="color: blue;">var</span> <span style="color: #008080;">$exectimeout</span> = <span style="color: #800080;">180</span>;
  <span style="color: blue;">var</span> <span style="color: #008080;">$codepage</span>;
  <span style="color: #008000; font-style: italic;">// Connection status: 1=&gt;opened, 0=&gt;closed</span>
  <span style="color: blue;">var</span> <span style="color: #008080;">$state</span> = <span style="color: #800080;">0</span>;
  <span style="color: blue;">var</span> <span style="color: #008080;">$querynum</span> = <span style="color: #800080;">0</span>;
  <span style="color: blue;">var</span> <span style="color: #008080;">$recordcount</span> = <span style="color: #800080;">0</span>;
  <span style="color: #008000; font-style: italic;">// save excuted sql</span>
  <span style="color: blue;">var</span> <span style="color: #008080;">$sqls</span> = <span style="color: blue;">array</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>; 
&nbsp;
  <span style="color: #008000; font-style: italic;">///////////////////</span>
  <span style="color: #008000; font-style: italic;">// Methods</span>
  <span style="color: #008000; font-style: italic;">///////////////////</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Open a new connection to the MSSQL server</span>
  <span style="color: blue;">function</span> connect<span style="color: #800000;">&#40;</span><span style="color: #008080;">$dbserver</span>, <span style="color: #008080;">$dbuser</span>, <span style="color: #008080;">$dbpwd</span>, <span style="color: #008080;">$dbname</span>, <span style="color: #008080;">$codepage</span> = <span style="color: #800080;">936</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$conn</span> = &amp; <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">conn</span>;
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">codepage</span> = <span style="color: #008080;">$codepage</span>;
    <span style="color: #008080;">$conn</span> = @<span style="color: blue;">new</span> COM<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;ADODB.Connection&quot;</span>, <span style="color: blue;">NULL</span>, <span style="color: #008080;">$codepage</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!<span style="color: #008080;">$conn</span><span style="color: #800000;">&#41;</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">halt</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">'Can not connect to MSSQL Server'</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #008080;">$conn</span>-&gt;<span style="color: #006600;">CommandTimeout</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">exectimeout</span>;
    @<span style="color: #008080;">$conn</span>-&gt;<span style="color: #006600;">Open</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Provider=SQLOLEDB; Data Source=$dbserver; UID=$dbuser; PWD=$dbpwd;Initial Catalog=$dbname&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!<span style="color: #008080;">$conn</span>-&gt;<span style="color: #006600;">State</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">halt</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">'Can not connect to Database Server'</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">state</span> = <span style="color: #008080;">$conn</span>-&gt;<span style="color: #006600;">State</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Open a new connection to another MSSQL server</span>
  <span style="color: blue;">function</span> rconnect<span style="color: #800000;">&#40;</span><span style="color: #008080;">$dbserver</span>, <span style="color: #008080;">$dbuser</span>, <span style="color: #008080;">$dbpwd</span>, <span style="color: #008080;">$dbname</span>, <span style="color: #008080;">$codepage</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">close</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">connect</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$dbserver</span>, <span style="color: #008080;">$dbuser</span>, <span style="color: #008080;">$dbpwd</span>, <span style="color: #008080;">$dbname</span>, <span style="color: #008080;">$codepage</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Select ms sql database</span>
  <span style="color: blue;">function</span> select_db<span style="color: #800000;">&#40;</span><span style="color: #008080;">$dbname</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: blue;">return</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;USE [$dbname]&quot;</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Performs a query on the database</span>
  <span style="color: blue;">function</span> query<span style="color: #800000;">&#40;</span><span style="color: #008080;">$sql</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$conn</span> = &amp; <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">conn</span>;
    <span style="color: #008080;">$query</span> = @<span style="color: #008080;">$conn</span>-&gt;<span style="color: #006600;">Execute</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$sql</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: #008080;">$conn</span>-&gt;<span style="color: #006600;">Errors</span>-&gt;<span style="color: #006600;">Count</span> &gt; <span style="color: #800080;">0</span><span style="color: #800000;">&#41;</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">halt</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">'Database Query Error'</span>, <span style="color: #008080;">$sql</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">sqls</span><span style="color: #800000;">&#91;</span><span style="color: #800000;">&#93;</span> = <span style="color: #008080;">$sql</span>;
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!<span style="color: #008080;">$query</span><span style="color: #800000;">&#41;</span> <span style="color: blue;">return</span> <span style="color: blue;">FALSE</span>;
    <span style="color: #008000; font-style: italic;">/* NO RECORDSET RETURNED */</span>
    <span style="color: #008000; font-style: italic;">/* INSERT, DELETE, NO RETURN(rs, v) PROC AND SO ON */</span>
    <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: #008080;">$query</span>-&gt;<span style="color: #006600;">State</span> == <span style="color: #800080;">0</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">recordcount</span> = <span style="color: #800080;">0</span>;
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">querynum</span>++;
      <span style="color: blue;">return</span> <span style="color: blue;">TRUE</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">recordcount</span> = <span style="color: #800080;">-1</span>;
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">querynum</span>++;
    <span style="color: blue;">return</span> <span style="color: #008080;">$query</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch a result row as an associative array</span>
  <span style="color: #008000; font-style: italic;">/* FETCH ONE RESULT ROW ONLY BY DEFAULT*/</span>
  <span style="color: blue;">function</span> fetch_array<span style="color: #800000;">&#40;</span>&amp;<span style="color: #008080;">$rs</span>, <span style="color: #008080;">$freeresult</span> = <span style="color: blue;">TRUE</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">BOF</span> &amp;&amp; <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">return</span> <span style="color: blue;">NULL</span>;
    <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!<span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        <span style="color: #008080;">$arr</span> = <span style="color: blue;">array</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #008080;">$colums</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Fields</span>-&gt;<span style="color: #006600;">Count</span>;
        <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$i</span>=<span style="color: #800080;">0</span>; <span style="color: #008080;">$i</span> &lt; <span style="color: #008080;">$colums</span>; <span style="color: #008080;">$i</span>++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
          <span style="color: #008080;">$fld</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Fields</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$i</span><span style="color: #800000;">&#41;</span>;
          <span style="color: #008080;">$arr</span><span style="color: #800000;">&#91;</span><span style="color: #ff0000;">strtolower</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Name</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#93;</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">datetime_convert</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Value</span>, <span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Type</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #800000;">&#125;</span>
        <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$freeresult</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
          <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #800000;">&#125;</span><span style="color: blue;">else</span><span style="color: #800000;">&#123;</span>
          <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">MoveNext</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #800000;">&#125;</span>
        <span style="color: blue;">return</span> <span style="color: #008080;">$arr</span>;
      <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: #800000;">&#123;</span>
        <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
        <span style="color: blue;">return</span> <span style="color: blue;">NULL</span>;
      <span style="color: #800000;">&#125;</span>
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch a result row as enumerated array</span>
  <span style="color: #008000; font-style: italic;">/* FETCH ONE RESULT ROW ONLY BY DEFAULT*/</span>
  <span style="color: blue;">function</span> fetch_row<span style="color: #800000;">&#40;</span>&amp;<span style="color: #008080;">$rs</span>, <span style="color: #008080;">$freeresult</span> = <span style="color: blue;">TRUE</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">BOF</span> &amp;&amp; <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">return</span> <span style="color: blue;">NULL</span>;
    <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!<span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        <span style="color: #008080;">$arr</span> = <span style="color: blue;">array</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #008080;">$colums</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Fields</span>-&gt;<span style="color: #006600;">Count</span>;
        <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$i</span>=<span style="color: #800080;">0</span>; <span style="color: #008080;">$i</span> &lt; <span style="color: #008080;">$colums</span>; <span style="color: #008080;">$i</span>++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
          <span style="color: #008080;">$fld</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Fields</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$i</span><span style="color: #800000;">&#41;</span>;
          <span style="color: #008080;">$arr</span><span style="color: #800000;">&#91;</span><span style="color: #008080;">$i</span><span style="color: #800000;">&#93;</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">datetime_convert</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Value</span>, <span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Type</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #800000;">&#125;</span>
        <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$freeresult</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
          <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #800000;">&#125;</span><span style="color: blue;">else</span><span style="color: #800000;">&#123;</span>
          <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">MoveNext</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #800000;">&#125;</span>
        <span style="color: blue;">return</span> <span style="color: #008080;">$arr</span>;
      <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: #800000;">&#123;</span>
        <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
        <span style="color: blue;">return</span> <span style="color: blue;">NULL</span>;
      <span style="color: #800000;">&#125;</span>
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch all result rows as associative array </span>
  <span style="color: blue;">function</span> fetch_all<span style="color: #800000;">&#40;</span>&amp;<span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">BOF</span> &amp;&amp; <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">return</span> <span style="color: blue;">null</span>;
    <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$arr</span> = <span style="color: blue;">array</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: #008080;">$colums</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Fields</span>-&gt;<span style="color: #006600;">Count</span>;
      <span style="color: #008080;">$rows</span> = <span style="color: #800080;">0</span>;
      <span style="color: blue;">while</span><span style="color: #800000;">&#40;</span>!<span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$i</span>=<span style="color: #800080;">0</span>; <span style="color: #008080;">$i</span> &lt; <span style="color: #008080;">$colums</span>; <span style="color: #008080;">$i</span>++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
          <span style="color: #008080;">$fld</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Fields</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$i</span><span style="color: #800000;">&#41;</span>;
          <span style="color: #008080;">$arr</span><span style="color: #800000;">&#91;</span><span style="color: #008080;">$rows</span><span style="color: #800000;">&#93;</span><span style="color: #800000;">&#91;</span><span style="color: #ff0000;">strtolower</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Name</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#93;</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">datetime_convert</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Value</span>, <span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Type</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #800000;">&#125;</span>
        <span style="color: #008080;">$rows</span>++;
        <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">MoveNext</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: #800000;">&#125;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">return</span> <span style="color: #008080;">$arr</span>;
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Open a recordset</span>
  <span style="color: blue;">function</span> recordset<span style="color: #800000;">&#40;</span><span style="color: #008080;">$sql</span>, <span style="color: #008080;">$cursortype</span> = <span style="color: #800080;">3</span>, <span style="color: #008080;">$locktype</span> = <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$conn</span> = &amp; <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">conn</span>;
    <span style="color: #008080;">$rs</span> = @<span style="color: blue;">new</span> COM<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;ADODB.RecordSet&quot;</span>, <span style="color: blue;">NULL</span>, <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">codepage</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">CursorLocation</span> = <span style="color: #800080;">3</span>;
    @<span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Open</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$sql</span>, <span style="color: #008080;">$conn</span>, <span style="color: #008080;">$cursortype</span>, <span style="color: #008080;">$locktype</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: #008080;">$conn</span>-&gt;<span style="color: #006600;">Errors</span>-&gt;<span style="color: #006600;">Count</span> &gt; <span style="color: #800080;">0</span><span style="color: #800000;">&#41;</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">halt</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">'Database Query Error'</span>, <span style="color: #008080;">$sql</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">querynum</span>++;
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">sqls</span><span style="color: #800000;">&#91;</span><span style="color: #800000;">&#93;</span> = <span style="color: #008080;">$sql</span>;
    <span style="color: blue;">return</span> <span style="color: #008080;">$rs</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch all result rows in one page as associative array </span>
  <span style="color: blue;">function</span> fetch_page<span style="color: #800000;">&#40;</span><span style="color: #008080;">$sql</span>, <span style="color: #008080;">$pagesize</span> = <span style="color: #800080;">20</span>, <span style="color: #008080;">$curpage</span> = <span style="color: #800080;">1</span>, <span style="color: #008080;">$cursortype</span> = <span style="color: #800080;">3</span>, <span style="color: #008080;">$locktype</span> = <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$conn</span> = &amp; <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">conn</span>;
    <span style="color: #008080;">$rs</span> = @<span style="color: blue;">new</span> COM<span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;ADODB.RecordSet&quot;</span>, <span style="color: blue;">NULL</span>, <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">codepage</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">CursorLocation</span> = <span style="color: #800080;">3</span>;
    <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">CacheSize</span> = <span style="color: #008080;">$pagesize</span> &lt; <span style="color: #800080;">100</span> ? <span style="color: #008080;">$pagesize</span> : <span style="color: #800080;">100</span>;
    @<span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Open</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$sql</span>, <span style="color: #008080;">$conn</span>, <span style="color: #008080;">$cursortype</span>, <span style="color: #008080;">$locktype</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: #008080;">$conn</span>-&gt;<span style="color: #006600;">Errors</span>-&gt;<span style="color: #006600;">Count</span> &gt; <span style="color: #800080;">0</span><span style="color: #800000;">&#41;</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">halt</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">'Database Query Error'</span>, <span style="color: #008080;">$sql</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">sqls</span><span style="color: #800000;">&#91;</span><span style="color: #800000;">&#93;</span> = <span style="color: #008080;">$sql</span>;
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">querynum</span>++;
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">BOF</span> &amp;&amp; <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">recordcount</span> = <span style="color: #800080;">0</span>;
      <span style="color: blue;">return</span> <span style="color: blue;">NULL</span>;
    <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">recordcount</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">RecordCount</span>;
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!<span style="color: #008080;">$pagesize</span><span style="color: #800000;">&#41;</span> <span style="color: #008080;">$pagesize</span> = <span style="color: #800080;">20</span>;
      <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">PageSize</span> = <span style="color: #008080;">$pagesize</span>;
      <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span>!<span style="color: #008080;">$curpage</span><span style="color: #800000;">&#41;</span>
        <span style="color: #008080;">$curpage</span> = <span style="color: #800080;">1</span>;
      <span style="color: blue;">elseif</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$curpage</span> &gt; <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">PageCount</span><span style="color: #800000;">&#41;</span>
        <span style="color: #008080;">$curpage</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">PageCount</span>;
      <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">AbsolutePage</span> = <span style="color: #008080;">$curpage</span>;
      <span style="color: #008080;">$arr</span> = <span style="color: blue;">array</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: #008080;">$colums</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Fields</span>-&gt;<span style="color: #006600;">Count</span>;
      <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$i</span>=<span style="color: #800080;">0</span>; <span style="color: #008080;">$i</span>&lt; <span style="color: #008080;">$pagesize</span>; <span style="color: #008080;">$i</span>++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
        <span style="color: blue;">for</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$j</span>=<span style="color: #800080;">0</span>; <span style="color: #008080;">$j</span> &lt; <span style="color: #008080;">$colums</span>; <span style="color: #008080;">$j</span>++<span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
          <span style="color: #008080;">$fld</span> = <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Fields</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$j</span><span style="color: #800000;">&#41;</span>;
          <span style="color: #008080;">$arr</span><span style="color: #800000;">&#91;</span><span style="color: #008080;">$i</span><span style="color: #800000;">&#93;</span><span style="color: #800000;">&#91;</span><span style="color: #ff0000;">strtolower</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Name</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#93;</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">datetime_convert</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Value</span>, <span style="color: #008080;">$fld</span>-&gt;<span style="color: #006600;">Type</span><span style="color: #800000;">&#41;</span>;
        <span style="color: #800000;">&#125;</span>
        <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">MoveNext</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
        <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">EOF</span><span style="color: #800000;">&#41;</span> <span style="color: blue;">break</span>;
      <span style="color: #800000;">&#125;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">return</span> <span style="color: #008080;">$arr</span>;
    <span style="color: #800000;">&#125;</span>
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Fetch one field value of a result row</span>
  <span style="color: #008000; font-style: italic;">/* SHOULD BE CALL BEFORE fetch_array, fetch_row, fetch_all */</span>
  <span style="color: blue;">function</span> result<span style="color: #800000;">&#40;</span>&amp;<span style="color: #008080;">$rs</span>, <span style="color: #008080;">$row</span> = <span style="color: #800080;">0</span>, <span style="color: #008080;">$mixfield</span> = <span style="color: #800080;">0</span>, <span style="color: #008080;">$freeresult</span> = <span style="color: blue;">TRUE</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">BOF</span> &amp;&amp; <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">EOF</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
      <span style="color: blue;">return</span> <span style="color: blue;">NULL</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$row</span><span style="color: #800000;">&#41;</span> <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Move</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$row</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #008080;">$value</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">datetime_convert</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">fields</span><span style="color: #800000;">&#91;</span><span style="color: #008080;">$mixfield</span><span style="color: #800000;">&#93;</span>-&gt;<span style="color: #006600;">Value</span>, <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">fields</span><span style="color: #800000;">&#91;</span><span style="color: #008080;">$mixfield</span><span style="color: #800000;">&#93;</span>-&gt;<span style="color: #006600;">Type</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$freeresult</span><span style="color: #800000;">&#41;</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">free_result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: #008080;">$value</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Check record existence</span>
  <span style="color: blue;">function</span> exists<span style="color: #800000;">&#40;</span><span style="color: #008080;">$table</span>, <span style="color: #008080;">$cond</span>=<span style="color: #ff00ff;">''</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$query</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;SELECT COUNT(*) FROM [$table]&quot;</span>.<span style="color: #800000;">&#40;</span><span style="color: #008080;">$cond</span>?<span style="color: #ff00ff;">&quot; WHERE $cond&quot;</span>:<span style="color: blue;">NULL</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$query</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Convert timestamp to mssql datetime style as YYYY-MM-DD hh:mm:ss</span>
  <span style="color: blue;">function</span> datetime_convert<span style="color: #800000;">&#40;</span><span style="color: #008080;">$fldv</span>, <span style="color: #008080;">$fldt</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$fldt</span> == <span style="color: #800080;">135</span> &amp;&amp; <span style="color: #008080;">$fldv</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
      <span style="color: blue;">return</span> <span style="color: #ff0000;">date</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;Y-m-d H:i:s&quot;</span>, <span style="color: #008080;">$fldv</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: blue;">return</span> <span style="color: #008080;">$fldv</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the number of rows in a result</span>
  <span style="color: blue;">function</span> num_rows<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$count</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">recordcount</span>;
    <span style="color: #008000; font-style: italic;">/* RS MAY RETURNED BY EXECUTE, NOT USE OPEN RECORDSET METHOD */</span>
    <span style="color: #008000; font-style: italic;">/* BUT THIS MAY NOT WORK WELL 
    if($count == -1) $count = $this-&gt;affected_rows();*/</span>
    <span style="color: blue;">return</span> <span style="color: #008080;">$count</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the number of fields in a result </span>
  <span style="color: blue;">function</span> num_fields<span style="color: #800000;">&#40;</span>&amp;<span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: blue;">return</span> <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Fields</span>-&gt;<span style="color: #006600;">Count</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the auto generated id used in the last query</span>
  <span style="color: blue;">function</span> insert_id<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$query</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;SELECT @@IDENTITY&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$query</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the number of affected rows in a previous SQL operation (UPDATE, DELETE)</span>
  <span style="color: #008000; font-style: italic;">/* IT SHOULD BE CALLED IMMEDIATELY AFTER A SQL OPERATION */</span>
  <span style="color: #008000; font-style: italic;">/* IF 'SET NOCOUNT ON' HAD BEEN SET BEFORE THE SQL OPERATION, IT WILL NOT WORK */</span>
  <span style="color: blue;">function</span> affected_rows<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$query</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;SELECT @@ROWCOUNT&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$query</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the mssql object id, use this function to check object exists</span>
  <span style="color: blue;">function</span> object_id<span style="color: #800000;">&#40;</span><span style="color: #008080;">$obj</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$query</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;SELECT OBJECT_ID('$obj')&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$query</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get the mssql version</span>
  <span style="color: blue;">function</span> version<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$query</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;SELECT @@VERSION&quot;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">result</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$query</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Release resource</span>
  <span style="color: blue;">function</span> free_result<span style="color: #800000;">&#40;</span>&amp;<span style="color: #008080;">$rs</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">State</span> == <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Close</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: #008080;">$rs</span>-&gt;<span style="color: #006600;">Release</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: #008080;">$rs</span> = <span style="color: blue;">null</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Close db connection</span>
  <span style="color: blue;">function</span> close<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: blue;">if</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">state</span> == <span style="color: #800080;">1</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">conn</span>-&gt;<span style="color: #006600;">Close</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">conn</span>-&gt;<span style="color: #006600;">Release</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
      <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">conn</span> = <span style="color: blue;">null</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">state</span> = <span style="color: #800080;">0</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get error details </span>
  <span style="color: #008000; font-style: italic;">/* SHOULD BE CALLED BEFORE errno() */</span>
  <span style="color: blue;">function</span> error<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$errors</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">conn</span>-&gt;<span style="color: #006600;">Errors</span>;
    <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: #008080;">$errors</span>-&gt;<span style="color: #006600;">Count</span> == <span style="color: #800080;">0</span><span style="color: #800000;">&#41;</span> <span style="color: blue;">return</span> <span style="color: #ff00ff;">''</span>;
    <span style="color: #008080;">$err</span> = <span style="color: #008080;">$errors</span>-&gt;<span style="color: #006600;">Item</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$errors</span>-&gt;<span style="color: #006600;">Count</span><span style="color: #800080;">-1</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: #008080;">$err</span>-&gt;<span style="color: #006600;">Description</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// Get error number</span>
  <span style="color: blue;">function</span> errno<span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$errors</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">conn</span>-&gt;<span style="color: #006600;">Errors</span>;
    <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: #008080;">$errors</span>-&gt;<span style="color: #006600;">Count</span> == <span style="color: #800080;">0</span><span style="color: #800000;">&#41;</span> <span style="color: blue;">return</span> <span style="color: #800080;">0</span>;
    <span style="color: #008080;">$err</span> = <span style="color: #008080;">$errors</span>-&gt;<span style="color: #006600;">Item</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$errors</span>-&gt;<span style="color: #006600;">Count</span><span style="color: #800080;">-1</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">return</span> <span style="color: #008080;">$err</span>-&gt;<span style="color: #006600;">NativeError</span>;
  <span style="color: #800000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic;">// halt script processing, show error message</span>
  <span style="color: blue;">function</span> halt<span style="color: #800000;">&#40;</span><span style="color: #008080;">$message</span> = <span style="color: #ff00ff;">''</span>, <span style="color: #008080;">$sql</span> = <span style="color: #ff00ff;">''</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: #008080;">$errno</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">errno</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: #008080;">$errno</span> == <span style="color: #800080;">5701</span><span style="color: #800000;">&#41;</span> <span style="color: blue;">return</span>;
    <span style="color: #008080;">$error</span> = <span style="color: #008080;">$this</span>-&gt;<span style="color: #006600;">error</span><span style="color: #800000;">&#40;</span><span style="color: #800000;">&#41;</span>;
    <span style="color: #008080;">$script</span> = <span style="color: #ff00ff;">'&lt;hr noshade size=1&gt;PHP: '</span>.<span style="color: #008080;">$GLOBALS</span><span style="color: #800000;">&#91;</span><span style="color: #ff00ff;">'_SERVER'</span><span style="color: #800000;">&#93;</span><span style="color: #800000;">&#91;</span><span style="color: #ff00ff;">'PHP_SELF'</span><span style="color: #800000;">&#93;</span>;
    <span style="color: #008080;">$sql</span> = <span style="color: #008080;">$sql</span> ? <span style="color: #ff00ff;">'&lt;hr noshade size=1&gt;SQL: '</span>.<span style="color: #ff0000;">nl2br</span><span style="color: #800000;">&#40;</span><span style="color: #ff0000;">htmlspecialchars</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$sql</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#41;</span> : <span style="color: #ff00ff;">''</span>;
    <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: #008080;">$GLOBALS</span><span style="color: #800000;">&#91;</span><span style="color: #ff00ff;">'debug'</span><span style="color: #800000;">&#93;</span> &amp;&amp; <span style="color: #008080;">$GLOBALS</span><span style="color: #800000;">&#91;</span><span style="color: #ff00ff;">'userid'</span><span style="color: #800000;">&#93;</span> &amp;&amp; !<span style="color: #ff0000;">defined</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;AJAX&quot;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#123;</span>
      <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: #008080;">$GLOBALS</span><span style="color: #800000;">&#91;</span><span style="color: #ff00ff;">'adminid'</span><span style="color: #800000;">&#93;</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
        <span style="color: #008080;">$output</span> = <span style="color: #008080;">$message</span>.<span style="color: #008080;">$script</span>.<span style="color: #008080;">$sql</span>.<span style="color: #ff00ff;">'&lt;hr noshade size=1 color=gray&gt;ERR: '</span>.<span style="color: #008080;">$error</span>.<span style="color: #ff00ff;">'&lt;hr noshade size=1&gt;NUM: '</span>.<span style="color: #008080;">$errno</span>;
      <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: #800000;">&#123;</span>
        <span style="color: #008080;">$output</span> = <span style="color: #008080;">$message</span>.<span style="color: #008080;">$script</span>;
      <span style="color: #800000;">&#125;</span>
    <span style="color: #800000;">&#125;</span> <span style="color: blue;">else</span> <span style="color: #800000;">&#123;</span>
      <span style="color: #008080;">$output</span> = <span style="color: #008080;">$message</span>;
    <span style="color: #800000;">&#125;</span>
    <span style="color: #008080;">$output</span> = <span style="color: #ff00ff;">'&lt;font style=&quot;font-size:9pt&quot;&gt;'</span>.<span style="color: #008080;">$output</span>.<span style="color: #ff00ff;">'&lt;/font&gt;'</span>;
    <span style="color: blue;">die</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$output</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
<span style="color: #800000;">&#125;</span></pre></div>

<h4>Related Posts</h4><ul class="related_post"><li><a href="http://www.voidman.com/2004/12/recording-operation-automatically.html" title="自动记录操作日志">自动记录操作日志</a></li><li><a href="http://www.voidman.com/2009/01/do-not-recommend-running-php-under-win2k3-iis.html" title="在 Windows 2003 IIS6 下跑 PHP 太不不靠谱了">在 Windows 2003 IIS6 下跑 PHP 太不不靠谱了</a></li><li><a href="http://www.voidman.com/2006/01/jscript-dbclass-for-sql-server-php-style.html" title="JScript 仿 PHP 操作 SQL Server">JScript 仿 PHP 操作 SQL Server</a></li></ul><hr /><a href="http://www.voidman.com">Voidman.com</a> | Link: <a href="http://www.voidman.com/2005/11/php-operate-sql-server.html">http://www.voidman.com/2005/11/php-operate-sql-server.html</a><br /><img alt="linezing" width="1" height="1" src="http://img.tongji.linezing.com/288120/tongji.gif" />]]></content:encoded>
			<wfw:commentRss>http://www.voidman.com/2005/11/php-operate-sql-server.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>自动记录操作日志</title>
		<link>http://www.voidman.com/2004/12/recording-operation-automatically.html</link>
		<comments>http://www.voidman.com/2004/12/recording-operation-automatically.html#comments</comments>
		<pubDate>Wed, 29 Dec 2004 08:08:12 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.voidman.com/2004/12/automatic-record-operation/</guid>
		<description><![CDATA[通常对数据的操作都需要记录日志，由于表结构的不同，每次都需要重新组织 SQL 语句则显得相当繁琐。写了几个函数来解决这个问题，不过有局限性：表的第一个字段必须为 id int identity。 // Sample // 生成日志表 createlogtable&#40;$table&#41;; // 生成记录操作日志的SQL语句 $logsql = genopelogsql&#40;$table, &#34;id=$id&#34;, 'update'&#41;; // 将日志记录SQL拼接到原SQL $sql = $logsql.$sql; // 执行操作 $db-&#62;query&#40;$sql&#41;; function genopelogsql&#40;$table, $cond, $opetype&#41; &#123; global $db, $tablepre, $username; $prefix = $tablepre; if &#40;empty&#40;$prefix&#41;&#41; $prefix = 'ope'; $table_log = &#34;{$table}_{$tablepre}log&#34;; // 操作者、操作类型 $operator = &#34;'&#34;.strtolower&#40;$opetype&#41;.&#34;d by $username' AS operator&#34;; [...]]]></description>
			<content:encoded><![CDATA[<p>通常对数据的操作都需要记录日志，由于表结构的不同，每次都需要重新组织 SQL 语句则显得相当繁琐。写了几个函数来解决这个问题，不过有局限性：表的第一个字段必须为 id int identity。</p>

<div class="wp_syntax"><pre class="php"><span style="color: #008000; font-style: italic;">// Sample</span>
<span style="color: #008000; font-style: italic;">// 生成日志表</span>
createlogtable<span style="color: #800000;">&#40;</span><span style="color: #008080;">$table</span><span style="color: #800000;">&#41;</span>;
<span style="color: #008000; font-style: italic;">// 生成记录操作日志的SQL语句</span>
<span style="color: #008080;">$logsql</span> = genopelogsql<span style="color: #800000;">&#40;</span><span style="color: #008080;">$table</span>, <span style="color: #ff00ff;">&quot;id=$id&quot;</span>, <span style="color: #ff00ff;">'update'</span><span style="color: #800000;">&#41;</span>;
<span style="color: #008000; font-style: italic;">// 将日志记录SQL拼接到原SQL</span>
<span style="color: #008080;">$sql</span> = <span style="color: #008080;">$logsql</span>.<span style="color: #008080;">$sql</span>;
<span style="color: #008000; font-style: italic;">// 执行操作</span>
<span style="color: #008080;">$db</span>-&gt;<span style="color: #006600;">query</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$sql</span><span style="color: #800000;">&#41;</span>;</pre></div>

<p><span id="more-129"></span></p>

<div class="wp_syntax"><pre class="php"><span style="color: blue;">function</span> genopelogsql<span style="color: #800000;">&#40;</span><span style="color: #008080;">$table</span>, <span style="color: #008080;">$cond</span>, <span style="color: #008080;">$opetype</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
  <span style="color: blue;">global</span> <span style="color: #008080;">$db</span>, <span style="color: #008080;">$tablepre</span>, <span style="color: #008080;">$username</span>;
  <span style="color: #008080;">$prefix</span> = <span style="color: #008080;">$tablepre</span>;
  <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: blue;">empty</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$prefix</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#41;</span> <span style="color: #008080;">$prefix</span> = <span style="color: #ff00ff;">'ope'</span>;
  <span style="color: #008080;">$table_log</span> = <span style="color: #ff00ff;">&quot;{$table}_{$tablepre}log&quot;</span>;
  <span style="color: #008000; font-style: italic;">// 操作者、操作类型</span>
  <span style="color: #008080;">$operator</span> = <span style="color: #ff00ff;">&quot;'&quot;</span>.<span style="color: #ff0000;">strtolower</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$opetype</span><span style="color: #800000;">&#41;</span>.<span style="color: #ff00ff;">&quot;d by $username' AS operator&quot;</span>;
  <span style="color: #008000; font-style: italic;">// 通过 SELECT * 而无需指定字段名</span>
  <span style="color: #008080;">$sql</span> .= <span style="color: #ff00ff;">&quot;INSERT INTO $table_log SELECT *, $operator, getdate() AS operatetime FROM $table&quot;</span>.<span style="color: #800000;">&#40;</span><span style="color: #008080;">$cond</span> ? <span style="color: #ff00ff;">&quot; WHERE $cond&quot;</span> : <span style="color: blue;">NULL</span><span style="color: #800000;">&#41;</span>;
  <span style="color: blue;">return</span> <span style="color: #008080;">$sql</span>.<span style="color: #ff0000;">chr</span><span style="color: #800000;">&#40;</span><span style="color: #800080;">13</span><span style="color: #800000;">&#41;</span>;
<span style="color: #800000;">&#125;</span>
&nbsp;
<span style="color: blue;">function</span> createlogtable<span style="color: #800000;">&#40;</span><span style="color: #008080;">$table</span>, <span style="color: #008080;">$prefix</span> = <span style="color: #ff00ff;">''</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
  <span style="color: blue;">global</span> <span style="color: #008080;">$db</span>, <span style="color: #008080;">$tablepre</span>;
  <span style="color: #008080;">$prefix</span> = <span style="color: #008080;">$tablepre</span>;
  <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span><span style="color: blue;">empty</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$prefix</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#41;</span> <span style="color: #008080;">$prefix</span> = <span style="color: #ff00ff;">'ope'</span>;
  <span style="color: #008000; font-style: italic;">// 日志表名</span>
  <span style="color: #008080;">$table_log</span> = <span style="color: #ff00ff;">&quot;{$table}_{$prefix}log&quot;</span>;
  <span style="color: #008000; font-style: italic;">// 检查日志表是否存在</span>
  <span style="color: blue;">if</span> <span style="color: #800000;">&#40;</span>!<span style="color: #800000;">&#40;</span><span style="color: #008080;">$db</span>-&gt;<span style="color: #006600;">object_id</span><span style="color: #800000;">&#40;</span><span style="color: #008080;">$table_log</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#41;</span><span style="color: #800000;">&#41;</span> <span style="color: #800000;">&#123;</span>
    <span style="color: #008000; font-style: italic;">// 局限性：表的第一个字段必须为 id int identity</span>
    <span style="color: #008080;">$db</span>-&gt;<span style="color: #006600;">query</span><span style="color: #800000;">&#40;</span><span style="color: #ff00ff;">&quot;SELECT 1 as src_id, * INTO [dbo].$table_log FROM $table WHERE 1&lt;&gt;1
    ALTER TABLE $table_log DROP COLUMN id
    ALTER TABLE $table_log ALTER COLUMN src_id INT NULL
    ALTER TABLE $table_log ADD {$prefix}operator VARCHAR(50) NULL
    ALTER TABLE $table_log ADD {$prefix}operatetime DATETIME NULL CONSTRAINT DF_{$table_log}_operatetime DEFAULT getdate() WITH VALUES&quot;</span><span style="color: #800000;">&#41;</span>;
  <span style="color: #800000;">&#125;</span>
<span style="color: #800000;">&#125;</span></pre></div>

<h4>Related Posts</h4><ul class="related_post"><li><a href="http://www.voidman.com/2005/11/php-operate-sql-server.html" title="PHP 操作 SQL Server">PHP 操作 SQL Server</a></li><li><a href="http://www.voidman.com/2009/01/do-not-recommend-running-php-under-win2k3-iis.html" title="在 Windows 2003 IIS6 下跑 PHP 太不不靠谱了">在 Windows 2003 IIS6 下跑 PHP 太不不靠谱了</a></li><li><a href="http://www.voidman.com/2006/01/jscript-dbclass-for-sql-server-php-style.html" title="JScript 仿 PHP 操作 SQL Server">JScript 仿 PHP 操作 SQL Server</a></li></ul><hr /><a href="http://www.voidman.com">Voidman.com</a> | Link: <a href="http://www.voidman.com/2004/12/recording-operation-automatically.html">http://www.voidman.com/2004/12/recording-operation-automatically.html</a><br /><img alt="linezing" width="1" height="1" src="http://img.tongji.linezing.com/288120/tongji.gif" />]]></content:encoded>
			<wfw:commentRss>http://www.voidman.com/2004/12/recording-operation-automatically.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
