<?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>迷途知返 &#187; PHP</title>
	<atom:link href="http://pwwang.com/category/technology/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://pwwang.com</link>
	<description>专注技术,用心生活!</description>
	<lastBuildDate>Wed, 08 Feb 2012 09:37:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>深入剖析php的Incomplete Object</title>
		<link>http://pwwang.com/2011/11/11/php-incomplete-object/</link>
		<comments>http://pwwang.com/2011/11/11/php-incomplete-object/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 10:18:13 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=1091</guid>
		<description><![CDATA[&#160;

行文原因

&#160;

<span class="readmore"><a href="http://pwwang.com/2011/11/11/php-incomplete-object/" title="深入剖析php的Incomplete Object">Read More: 3271 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<h1>&nbsp;</h1>
<h1>行文原因</h1>
<p>&nbsp;</p>
<p>为什么要写这篇文章? 因为我对于度娘和谷爹里搜索到关于这个问题的文章耿耿于怀, 忿忿不已. 这些文章都只说了个所以, 却没说然.</p>
<p>在这篇文章里, 我将详细地说一下Incomplete Object的成因, 以及这其中session, serialize及unserialize引起的问题和所起的作用</p>
<p><span id="more-1091"></span></p>
<h1>&nbsp;</h1>
<h1>网上给出的解决方案</h1>
<p>&nbsp;</p>
<p>1. 网上有个很典型的代码, 说是session_start()位置不正确:</p>
<p>MyClass.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #000000; font-weight: bold;">class</span> MyClass<span style="color: #009900;">&#123;</span> 
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$_counter</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> 
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> increment<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_counter<span style="color: #339933;">++;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
    <span style="color: #b1b100;">require_once</span> __DIR__ <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/MyClass.php'</span><span style="color: #339933;">;</span> 
    <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MyClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">get_class</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">increment</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>而给出的解决方案是:&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #b1b100;">require_once</span> __DIR__ <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/MyClass.php'</span><span style="color: #339933;">;</span> 
<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
    <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MyClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span> 
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">get_class</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">increment</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>仔细看一下代码, 不难发现, 其实根本就不是session_start()位置不正确, 看看那个if逻辑, 在<span class="Apple-style-span" style="font-family: monospace; font-size: medium; "><span style="color: rgb(0, 0, 187); ">$_SESSION</span><span style="color: rgb(0, 119, 0); ">[</span><span style="color: rgb(221, 0, 0); ">'myObject'</span><span style="color: rgb(0, 119, 0); ">]</span></span></p>
<p>值存在时, 人为不去引用MyClass.php文件.</p>
<p>我们把if条件去掉, 不改变session_start()的位置, 程序正常运行!!!</p>
<p>2. 用serialize序列化类实例, 然后再用unserialize解序列化.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
    <span style="color: #b1b100;">require_once</span> __DIR__ <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/MyClass.php'</span><span style="color: #339933;">;</span> 
    <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> MyClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span> 
<span style="color: #000088;">$myObject</span> <span style="color: #339933;">=</span> <span style="color: #990000;">unserialize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myObject'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">get_class</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$myObject</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$myObject</span><span style="color: #339933;">---&gt;</span><span style="color: #004000;">increment</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>&nbsp;&nbsp;很显然, 问题依旧.</p>
<h1>&nbsp;</h1>
<h1>问题的真正成因</h1>
<p>&nbsp;</p>
<p>很显然, 所谓的session_start()位置, 是否用serialize序列化, 都不是这个问题真正的成因.</p>
<p>从网上给出的第一个解决方案,&nbsp; 如果我们把if条件去掉, 程序正常运行.</p>
<p>实际上, 这个if语句阻止了程序再次运行时去引用类定义文件MyClass.php.</p>
<p>这和用不用serialize和unserialize一毛钱的关系都没有.</p>
<p>&nbsp;</p>
<p>说到这里, 为了解决为什么不引用类定义文件, 而出现Incomplete Object的情况, 我们要先理解一下</p>
<p>我们把类实例(Object)传给session,那在服务器上是如何存储的呢?</p>
<p>实际上, 在服务器上, php会先把这个object序列化serialize, 再存储到文件里, 当调用的时候, 就会</p>
<p>自动反序列化unserialize,并且重新实例化这个类.</p>
<p>&nbsp;</p>
<p>那我们现在就可以解释问题的成因了. 当把object写进一个session时<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Simsun; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="font-family: monospace; "><span style="color: rgb(0, 0, 187); ">$_SESSION</span><span style="color: rgb(0, 119, 0); ">[</span><span style="color: rgb(221, 0, 0); ">'myObject'</span><span style="color: rgb(0, 119, 0); ">]&nbsp;=&nbsp;new&nbsp;</span><span style="color: rgb(0, 0, 187); ">MyClass</span><span style="color: rgb(0, 119, 0); ">()</span></span></span>,</p>
<p>把它实例化, 而在取出的时候就会自动重新实例化这个类, 而在实例化这个类的时候, 发现这个类并没有定义, 于是就会出现</p>
<p>Incomplete Object错误.</p>
<p>&nbsp;</p>
<p><strong>简单的说, 反序列化一个未定义的类的实例, 就会将object转化为Incomplete Object, 操作时就会报错</strong>.</p>
<p>&nbsp;</p>
<p>我们可以来做个实验.</p>
<p>先定义一个类, 然后获取它的实例, 再获取这个实例的序列化字符串:</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ php <span style="color: #660033;">-r</span> <span style="color: #ff0000;">'class A{var $x=0; function p(){echo ++$x;}} $a=new A(); echo serialize($a);'</span>
O:<span style="color: #000000;">1</span>:<span style="color: #ff0000;">&quot;A&quot;</span>:<span style="color: #000000;">1</span>:<span style="color: #7a0874; font-weight: bold;">&#123;</span>s:<span style="color: #000000;">1</span>:<span style="color: #ff0000;">&quot;x&quot;</span>;i:<span style="color: #000000;">0</span>;<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>我们来反序列化这个字符串, 并调用p方法:</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ php <span style="color: #660033;">-r</span> <span style="color: #ff0000;">'$a=unserialize(&quot;O:1:\&quot;A\&quot;:1:{s:1:\&quot;x\&quot;;i:0;}&quot;);$a-&gt;p();'</span></pre></div></div>

<p>最后我们看到报出Incomplete Object的错误:</p>
<p>&nbsp;</p>
<blockquote>
<p>Fatal error: Unknown: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition &quot;A&quot; of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition&nbsp; in Command line code on line 1</p>
</blockquote>
<div>如果我们在反序列化这个字符串之前, 给出类A的声明:</div>
<div>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ php <span style="color: #660033;">-r</span> <span style="color: #ff0000;">'class A{var $x=0; function p(){echo ++$x;}} $a=unserialize(&quot;O:1:\&quot;A\&quot;:1:{s:1:\&quot;x\&quot;;i:0;}&quot;);$a-&gt;p();'</span>
<span style="color: #000000;">1</span></pre></div></div>

<p>那么这个程序就可以正常运行.</p></div>
<div>&nbsp;</div>
<div>其实session的情况 同样也适用于将object序列化后存入文件, 然后再从文件中取出反序列化的情况.</div>
<div>&nbsp;</div>
<div>虽然, 如果我们不执行p方法, 程序不会报错, 但是在反序列化的时候, 如果类没有定义, 那么这个object就会是一个Incomplete Object了:</div>
<div>看下面的代码:</div>
<div>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ php <span style="color: #660033;">-r</span> <span style="color: #ff0000;">'$a=unserialize(&quot;O:1:\&quot;A\&quot;:1:{s:1:\&quot;x\&quot;;i:0;}&quot;);print_r($a);'</span>
__PHP_Incomplete_Class Object
<span style="color: #7a0874; font-weight: bold;">&#40;</span>
    <span style="color: #7a0874; font-weight: bold;">&#91;</span>__PHP_Incomplete_Class_Name<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> A
    <span style="color: #7a0874; font-weight: bold;">&#91;</span>x<span style="color: #7a0874; font-weight: bold;">&#93;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">0</span>
<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

</div>
<h1>解决办法</h1>
<p>&nbsp;</p>
<p>其实真正的解决办法, 上面已经给出来了, 就是在反序列化之前引入声明这个类, 或者引入这个类的实例.</p>
<p>为了避免session在取值自动反序列化将object转成Incomplete Object, 这个时候, 我们就需要显示地去serialize一个object, 然后我们取值时</p>
<p>取到的只是序列化的字符串, 这时php是不会去检测类是否定义的. 那么我们就可以在这个时候解决问题了.</p>
<p>&nbsp;</p>
<p>下面给出一个解决方案:</p>
<p>假设命名规则是这样的A.php文件定义了类A, 而我们在session中,以小写a为key来保存:</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'a'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">require_once</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'.php'</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$class</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000088;">$class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">// try to include class declaration file before use it</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">class_exists</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">require_once</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">'.php'</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$obj</span> <span style="color: #339933;">=</span> <span style="color: #990000;">unserialize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// TODO: whatever you what to do with $obj ...</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>当然, 你也可以用auto_loader来加载类的声明文件.</p>
<p>&nbsp;</p>
<div><embed width="0" hidden="true" height="0" id="lingoes_plugin_object" type="application/lingoes-npruntime-capture-word-plugin"></embed></div>
<p>&nbsp;</p>
<div><embed width="0" hidden="true" height="0" type="application/lingoes-npruntime-capture-word-plugin" id="lingoes_plugin_object"></embed></div>
<p>&nbsp;</p>
<div><embed width="0" hidden="true" height="0" id="lingoes_plugin_object" type="application/lingoes-npruntime-capture-word-plugin"></embed></div>
<p>&nbsp;</p>
<div><embed width="0" hidden="true" height="0" type="application/lingoes-npruntime-capture-word-plugin" id="lingoes_plugin_object"></embed></div>
<p>&nbsp;</p>
<div><embed width="0" hidden="true" height="0" id="lingoes_plugin_object" type="application/lingoes-npruntime-capture-word-plugin"></embed></div>
<p>&nbsp;</p>
<div><embed width="0" hidden="true" height="0" type="application/lingoes-npruntime-capture-word-plugin" id="lingoes_plugin_object"></embed></div>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2011/11/11/php-incomplete-object/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LAMP流程中的乱码问题总结</title>
		<link>http://pwwang.com/2011/07/12/kill-messy-codes/</link>
		<comments>http://pwwang.com/2011/07/12/kill-messy-codes/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 19:28:43 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://pwwang.com/2011/07/12/lamp%e6%b5%81%e7%a8%8b%e4%b8%ad%e7%9a%84%e4%b9%b1%e7%a0%81%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93/</guid>
		<description><![CDATA[这里说的乱码问题包括：

一，开发的页面出现乱码，

二，从数据库取值或插入时出现乱码，

<span class="readmore"><a href="http://pwwang.com/2011/07/12/kill-messy-codes/" title="LAMP流程中的乱码问题总结">Read More: 827 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>这里说的乱码问题包括：</p>
<p>一，开发的页面出现乱码，</p>
<p>二，从数据库取值或插入时出现乱码，</p>
<p>三，phpmysql页面出现乱码。</p>
<p><span id="more-1080"></span></p>
<p>&nbsp;</p>
<p><!-- wpmore --><!-- more --></p>
<p>刚开始碰到乱码问题可能会不知所措，但是了解了可能出现乱码的几个环节，便可以轻松地进行一一排查。</p>
<p>&nbsp;</p>
<p>避免出现乱码的最好的做法，就是在所有指定编码的地方指定相同的编码(废话，乱码不就是编码不一致造成的么？)。这里推荐釆用utf-8进行统一编码。</p>
<p>下面分别描述及解释下上面三种出现乱码的情况。</p>
<p>第一种情况，不涉及数据库操作，或者我们假设数据库的操作不会造成乱码（造成乱码的情况下面讨论）。那么只需要检查脚本文件的编码和页面编码是否一致即可。文件的编码一般的文本编辑器都可以更改，如notepad2，notepad++等，而网页页面的编码则通过meta标签来指定。<br />
&lt;meta content=&#8221;text/html; charset=UTF-8&#8243; http-equiv=&#8221;Content-Type&#8221; /&gt;
</p>
<p>第二种情况，则需要数据库编码、数据库表中该字段的编码及页面编码保持一致。数据库编码及字段编码可以在创建时设置collation来指定。而页面编码上面已经提到。</p>
<p>有的时候，我们在进行数据库操作时，插入的是什么字符，读取出来的时候还是那些字符，好像没有什么问题。但是当我们对数据库进行管理的时候，在第三方工具里显示的却是乱码，如phpmysql,mysql workbench等。这就是由于连接数据库时的编码和数据库的编码或者phpmysql的页面编码不一致造成的。我们可以在数据库连接建立后通过sql语句来指定编码：SET NAMES UTF8; 注意没有连字符。</p>
<p>总结：这里推荐的方式是将所有的编码指定为utf-8。</p>
<p>脚本文件编码：utf-8</p>
<p>网页页面编码：<br />
&lt;meta content=&#8221;text/html; charset=UTF-8&#8243; http-equiv=&#8221;Content-Type&#8221; /&gt;
</p>
<p>数据库及字段编码：utf8_general_ci</p>
<p>数据库连接编码：SET NAMES UTF8;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2011/07/12/kill-messy-codes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>随机记录分页</title>
		<link>http://pwwang.com/2011/05/20/random-records-pagination/</link>
		<comments>http://pwwang.com/2011/05/20/random-records-pagination/#comments</comments>
		<pubDate>Fri, 20 May 2011 05:38:04 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[分页]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=1037</guid>
		<description><![CDATA[&#160;

问题（需求）：

1. 每次打开第一页时，显示的记录不同。

<span class="readmore"><a href="http://pwwang.com/2011/05/20/random-records-pagination/" title="随机记录分页">Read More: 3925 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>问题（需求）：</p>
<p>1. 每次打开第一页时，显示的记录不同。</p>
<p>2. 但是从第一页后的其他页面（第二页，第三页，。。。）返回第一页时，还是那个第一次打开第一页的那些记录</p>
<p>3. 每页记录不能重复</p>
<p>&nbsp;</p>
<p>其实看起来很简单的一个问题，但是加上分页的要求之后，变得稍微有点复杂。</p>
<p>如果是随机从数据库取一条记录，最直接的方式，就是order by rand() limit 1:</p>
<p><span id="more-1037"></span></p>
<p>当然，网上也有很多提高order by rand()效率的写法，都可以参考。</p>
<p>如果是不需要分页，那order by rand()及其优化方式，也都可以满足需求。</p>
<p>倘若需要分页，我们给rand指定一个参数，再配以limit，可以满足我们第2，3条要求。</p>
<p>因为如果每次请求rand的参数是不变的，那每次取的记录顺序也是一样的，这样每次每开第一页的记录，自然也是一样的。</p>
<p>重新连接数据库也一样。</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">pwwang<span style="color: #000000; font-weight: bold;">@</span>pwwang-xxx:~$ mysql <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span>
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection <span style="color: #c20cb9; font-weight: bold;">id</span> is <span style="color: #000000;">3</span>
Server version: 5.5.8 Source distribution
&nbsp;
Copyright <span style="color: #7a0874; font-weight: bold;">&#40;</span>c<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">2000</span>, <span style="color: #000000;">2010</span>, Oracle and<span style="color: #000000; font-weight: bold;">/</span>or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is <span style="color: #c20cb9; font-weight: bold;">free</span> software,
and you are welcome to modify and redistribute it under the GPL v2 license
&nbsp;
Type <span style="color: #ff0000;">'help;'</span> or <span style="color: #ff0000;">'\h'</span> <span style="color: #000000; font-weight: bold;">for</span> help. Type <span style="color: #ff0000;">'\c'</span> to <span style="color: #c20cb9; font-weight: bold;">clear</span> the current input statement.
&nbsp;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> use database;
Reading table information <span style="color: #000000; font-weight: bold;">for</span> completion of table and column names
You can turn off this feature to get a quicker startup with <span style="color: #660033;">-A</span>
&nbsp;
Database changed
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">select</span> <span style="color: #c20cb9; font-weight: bold;">id</span> from table order by rand<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
+----+
<span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">id</span> <span style="color: #000000; font-weight: bold;">|</span>
+----+
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">3</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">8</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">4</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">7</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">6</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">9</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">5</span> <span style="color: #000000; font-weight: bold;">|</span>
+----+
<span style="color: #000000;">8</span> rows <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.00</span> sec<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> Bye
pwwang<span style="color: #000000; font-weight: bold;">@</span>pwwang-xxx:~$ mysql <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span>
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection <span style="color: #c20cb9; font-weight: bold;">id</span> is <span style="color: #000000;">4</span>
Server version: 5.5.8 Source distribution
&nbsp;
Copyright <span style="color: #7a0874; font-weight: bold;">&#40;</span>c<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">2000</span>, <span style="color: #000000;">2010</span>, Oracle and<span style="color: #000000; font-weight: bold;">/</span>or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is <span style="color: #c20cb9; font-weight: bold;">free</span> software,
and you are welcome to modify and redistribute it under the GPL v2 license
&nbsp;
Type <span style="color: #ff0000;">'help;'</span> or <span style="color: #ff0000;">'\h'</span> <span style="color: #000000; font-weight: bold;">for</span> help. Type <span style="color: #ff0000;">'\c'</span> to <span style="color: #c20cb9; font-weight: bold;">clear</span> the current input statement.
&nbsp;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> use database;
Reading table information <span style="color: #000000; font-weight: bold;">for</span> completion of table and column names
You can turn off this feature to get a quicker startup with <span style="color: #660033;">-A</span>
&nbsp;
Database changed
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">select</span> <span style="color: #c20cb9; font-weight: bold;">id</span> from table order by rand<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
+----+
<span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">id</span> <span style="color: #000000; font-weight: bold;">|</span>
+----+
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">3</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">8</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">4</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">7</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">6</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">9</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">5</span> <span style="color: #000000; font-weight: bold;">|</span>
+----+
<span style="color: #000000;">8</span> rows <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.00</span> sec<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> Bye</pre></div></div>

<p>&nbsp;</p>
<p>重启数据库，结果还是一样</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">pwwang<span style="color: #000000; font-weight: bold;">@</span>pwwang-xxx:~$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> lampp restart
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">sudo</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> password <span style="color: #000000; font-weight: bold;">for</span> pwwang:
Stopping XAMPP <span style="color: #000000; font-weight: bold;">for</span> Linux 1.7.4...
XAMPP: Stopping Apache with SSL...
XAMPP: Stopping MySQL...
XAMPP: Stopping ProFTPD...
XAMPP stopped.
Starting XAMPP <span style="color: #000000; font-weight: bold;">for</span> Linux 1.7.4...
XAMPP: Starting Apache with SSL <span style="color: #7a0874; font-weight: bold;">&#40;</span>and PHP5<span style="color: #7a0874; font-weight: bold;">&#41;</span>...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP <span style="color: #000000; font-weight: bold;">for</span> Linux started.
pwwang<span style="color: #000000; font-weight: bold;">@</span>pwwang-xxx:~$ mysql <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span>
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection <span style="color: #c20cb9; font-weight: bold;">id</span> is <span style="color: #000000;">1</span>
Server version: 5.5.8 Source distribution
&nbsp;
Copyright <span style="color: #7a0874; font-weight: bold;">&#40;</span>c<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">2000</span>, <span style="color: #000000;">2010</span>, Oracle and<span style="color: #000000; font-weight: bold;">/</span>or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is <span style="color: #c20cb9; font-weight: bold;">free</span> software,
and you are welcome to modify and redistribute it under the GPL v2 license
&nbsp;
Type <span style="color: #ff0000;">'help;'</span> or <span style="color: #ff0000;">'\h'</span> <span style="color: #000000; font-weight: bold;">for</span> help. Type <span style="color: #ff0000;">'\c'</span> to <span style="color: #c20cb9; font-weight: bold;">clear</span> the current input statement.
&nbsp;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> use database;
Reading table information <span style="color: #000000; font-weight: bold;">for</span> completion of table and column names
You can turn off this feature to get a quicker startup with <span style="color: #660033;">-A</span>
&nbsp;
Database changed
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">select</span> <span style="color: #c20cb9; font-weight: bold;">id</span> from table order by rand<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
+----+
<span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">id</span> <span style="color: #000000; font-weight: bold;">|</span>
+----+
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">3</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">8</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">4</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">7</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">6</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">9</span> <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000;">5</span> <span style="color: #000000; font-weight: bold;">|</span>
+----+
<span style="color: #000000;">8</span> rows <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.00</span> sec<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>&nbsp;</p>
<p>因为给定参数之后，RAND的结果是一样的</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">mysql<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">select</span> RAND<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
+---------------------+
<span style="color: #000000; font-weight: bold;">|</span> RAND<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>             <span style="color: #000000; font-weight: bold;">|</span>
+---------------------+
<span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000;">0.40540353712197724</span> <span style="color: #000000; font-weight: bold;">|</span>
+---------------------+
<span style="color: #000000;">1</span> row <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.02</span> sec<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">select</span> RAND<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
+---------------------+
<span style="color: #000000; font-weight: bold;">|</span> RAND<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>             <span style="color: #000000; font-weight: bold;">|</span>
+---------------------+
<span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000;">0.40540353712197724</span> <span style="color: #000000; font-weight: bold;">|</span>
+---------------------+
<span style="color: #000000;">1</span> row <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.00</span> sec<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>&nbsp;</p>
<p>如果我们每次在打开第一页的时候就给RAND一个随机的参数，那问题就可以解决了。</p>
<p>&nbsp;</p>
<p><strong><span style="color: rgb(0, 128, 128);"><span style="font-size: larger;">Solution 1：</span></span></strong></p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$seed</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'seed'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 你也可以用session, cookie等方式来存储这个值</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'seed'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  
    <span style="color: #000088;">$seed</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT id FROM table ORDER BY RAND(<span style="color: #006699; font-weight: bold;">$seed</span>) LIMIT <span style="color: #006699; font-weight: bold;">$offset</span>, <span style="color: #006699; font-weight: bold;">$limit</span>;&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&nbsp;</p>
<p>页面渲染的时候每个和分页相关的链接都带上参数seed=$seed, 就可以保证在这个周期的记录浏览中，每一页的记录都是特定的。</p>
<p>在下个周期中，由于没有$_GET['seed']的值，$seed会重新随机取值，那么，第一页的记录也就和上个周期不一样了。</p>
<p>&nbsp;</p>
<p><strong><span style="color: rgb(0, 128, 128);"><span style="font-size: larger;">Solution 2：</span></span></strong></p>
<p>当然，也有人说到了order by rand() 的效率问题。那我们可以用脚本事先把primary key（假设这里是increment的id）排好随机顺序，再传给sql去查询。</p>
<p>如果你的记录的id是连续的，你可以用max(id)来获取pk的序列：</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$serial</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'serial'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$serial</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$maxid</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_value</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT MAX(id) FROM table&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$serial</span> <span style="color: #339933;">=</span> <span style="color: #990000;">range</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$maxid</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">shuffle</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$serial</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$ids_array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_slice</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$serial</span><span style="color: #339933;">,</span> <span style="color: #000088;">$offset</span><span style="color: #339933;">,</span> <span style="color: #000088;">$limit</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$ids</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ids_array</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT id FROM table WHERE id IN (<span style="color: #006699; font-weight: bold;">$ids</span>);&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>如果你单页的记录不多的话（一般也不会太多），这个替代方案可以很好的弥补order by rand的效率问题</p>
<p>&nbsp;</p>
<p>但是如果你的记录id不是连续的，那么就想要办法先拿到id的序列：</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$serial</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_value</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT group_concat(id) FROM table&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$serial</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span> <span style="color: #000088;">$serial</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>这里只演示了如何获取id序列。其它机制和连续id是一样的。</p>
<p>&nbsp;</p>
<p>不过这里用到了group_concat，来选取所有记录的id。</p>
<p>效率问题，大家可以根据实际情况在order by rand和group_concat之间权衡。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2011/05/20/random-records-pagination/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>自己动手解析xml&#8211;原理篇</title>
		<link>http://pwwang.com/2010/09/03/parse_xml_principle/</link>
		<comments>http://pwwang.com/2010/09/03/parse_xml_principle/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 05:26:53 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[解析xml]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=971</guid>
		<description><![CDATA[&#160;

没错, 有人说, 你这不是纯粹吃饱了撑着吗?

是的, xml作为数据载体拥有众多优势, 使得其应用越来越广泛.

<span class="readmore"><a href="http://pwwang.com/2010/09/03/parse_xml_principle/" title="自己动手解析xml&#8211;原理篇">Read More: 1130 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>没错, 有人说, 你这不是纯粹吃饱了撑着吗?</p>
<p>是的, xml作为数据载体拥有众多优势, 使得其应用越来越广泛.</p>
<p>越来越多的语言也自带了很多xml解析库.</p>
<p>但是到底是如何解析那一堆xml字符串的, 少有人探究.</p>
<p>我也无从得知, 久前也尝试自己解析过, 但是方法很笨拙.</p>
<p>前两天从盒子里放着的小盒子, 我想到了稍好一些的解析方法.</p>
<p><span id="more-971"></span><strong>-&gt; 理解xml的结构</strong></p>
<p>&nbsp; 每一个xml的标签比较是闭合的, 可以嵌套, 但不可以交叉.比如这样的结构是可以的:&nbsp;&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;root<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;b<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>test<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/b<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/root<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>&nbsp;</p>
<p>&nbsp; 但是这样是不被允许的:</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;root<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/b<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;b<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/root<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>&nbsp;</p>
<p>&nbsp; 每一个xml文件只能有一个根.</p>
<p>&nbsp; 每个标签可以有自己的属性, 这个和HTML类似</p>
<p>&nbsp; 标签的值被其开始标签和结束标签所包围</p>
<p>&nbsp; 如果值比较复杂,或者其中含有打乱xml结构的字符, 可以采用cdata</p>
<p>&nbsp; 如果标签没有值, 可以采用这种方式简写:</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;tag /&gt;</pre></div></div>

<p>&nbsp;</p>
<p><strong>-&gt; 精妙的比喻</strong></p>
<p>&nbsp; 这个比喻是从那两个盒子想到的.</p>
<p>&nbsp; 每个盒子必须有盖子(标签闭合)</p>
<p>&nbsp; 小盒子可以放在大盒子里(标签可以嵌套)</p>
<p>&nbsp; 每个盒子的盖子必须盖在自己的盒身上(不能交叉)</p>
<p>&nbsp; 现在有一堆盒子, 我们要把它们按照指定的关系(谁放在谁里面, 谁放在谁外面)整理好, 放在一个大盒子(那个唯一的根)里拎走.</p>
<p>&nbsp; 我们考虑的, 就是这个放置的过程.</p>
<p>&nbsp; 可以很直观的发现:&nbsp;&nbsp; 先放的盒子后盖盖, 后放的盒子先盖盖, 如果里面不用放盒子了, 直接盖上盖.</p>
<p>&nbsp; (-为什么? -什么, 你问我为什么? 那..那&#8230;我问谁去?! 呃, 如果你有这个疑问, 建议你不要往下看了)</p>
<p>&nbsp; (-哇! -嘘! 现在是偶在说话, 就算你发现了秘密, 也要等偶说完嘛. 如果你发出了这样的惊叹, 请继续往下看)</p>
<p>&nbsp; 看到这里, 相信你已经能够把这个过程和xml的解析联系起来了吧.</p>
<p>&nbsp; 如果我们把这个整理例子的过程看成是我们还读/写整个xml文件的过程, 那么就是这样:</p>
<p>&nbsp; 先读到的标签, 一定是比后读到的标签后闭合.</p>
<p><strong>-&gt;如何解析?</strong></p>
<p>&nbsp; 好了,&nbsp; 早就有人不耐烦了, 终于到正题了, 说了半天, 你还是没说怎么解析嘛.</p>
<p>&nbsp; 先读到的后闭合, 先读到的后闭合&#8230;&#8230;</p>
<p>&nbsp; 我想到了, 你想到了么? 是什么? 堆栈!! 没错, 就是堆栈!</p>
<p>&nbsp; 容易了吧, 容易了吧, 简单了吧, 简单了吧&#8230;</p>
<p>&nbsp; 读xml的字符串, 每读到一个开始标签, 压入堆栈, 每读到一个闭合标签, 弹出栈顶元素, 那么, 现在的栈顶元素就是它的直接父节点.</p>
<p>&nbsp; (-为什么,为什么,为什么? -哪来那么多为什么?! 盖上盖子, 先于这个盒子放进去, 且没有盖盖子的盒子, 是不是它的父盒子? 是不是, 是不是?</p>
<p>&nbsp; 注意这里没有盖盖子很重要, 因为盖上了盖子就不能往里放盒子了, 也没不可能有这个子盒子了, 因为盖上盖子就弹出堆栈了.)</p>
<p>&nbsp; 元素得到了, 它的父节点也得到了(相当于得到了子节点(父节点的子节点)), 那么所有的元素都串起来了, 解析也就简单了.</p>
<p>&nbsp;<a href="http://pwwang.com/wp-content/uploads/2010/09/xml.jpg"><img width="470" height="149" border="0" alt="" style="clear: both;" src="http://pwwang.com/wp-content/uploads/2010/09/xml.jpg" title="xml" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2010/09/03/parse_xml_principle/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>php分页类</title>
		<link>http://pwwang.com/2009/05/27/php%e5%88%86%e9%a1%b5%e7%b1%bb/</link>
		<comments>http://pwwang.com/2009/05/27/php%e5%88%86%e9%a1%b5%e7%b1%bb/#comments</comments>
		<pubDate>Wed, 27 May 2009 07:58:09 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[分页]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=628</guid>
		<description><![CDATA[&#160;

写了一个功能相对比较全面的php分页类,包括两种分页模式,两种底部链接显示模式,可以进行任意搭配, 另外还包括服务端和客户端排序.

其中对数据库的操作采用的是这个类. 需要对$db按自己的实际情况进行实例化.

<span class="readmore"><a href="http://pwwang.com/2009/05/27/php%e5%88%86%e9%a1%b5%e7%b1%bb/" title="php分页类">Read More: 8059 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>写了一个功能相对比较全面的php分页类,包括两种分页模式,两种底部链接显示模式,可以进行任意搭配, 另外还包括服务端和客户端排序.</p>
<p>其中对数据库的操作采用的是<a href="http://pwwang.com/?p=624">这个类</a>. 需要对$db按自己的实际情况进行实例化.</p>
<p>客户端排序需要jquery.js库文件和jquery.tablesorter.js文件.</p>
<p>先看两种分页模式的效果图:</p>
<p><a href="http://pwwang.com/wp-content/uploads/2009/05/paginate.jpg"><img height="260" width="300" border="0" class="alignleft size-medium wp-image-626" title="paginate" alt="paginate" src="http://pwwang.com/wp-content/uploads/2009/05/paginate-300x260.jpg" /></a></p>
<p><br clear="all" /></p>
<p>&nbsp;</p>
<p><a href="http://pwwang.com/wp-content/uploads/2009/05/paginate1.jpg"><img height="148" width="300" border="0" src="http://pwwang.com/wp-content/uploads/2009/05/paginate1-300x148.jpg" alt="paginate1" title="paginate1" class="alignleft size-medium wp-image-627" /></a></p>
<p><br clear="all" /><br />
<span id="more-628"></span></p>
<p>第一种模式的调用代码:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">            <span style="color: #000000; font-weight: bold;">function</span> show_del<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;&lt;input type=button value=<span style="color: #006699; font-weight: bold;">$id</span>&gt;&quot;</span><span style="color: #339933;">;</span>    
            <span style="color: #009900;">&#125;</span>
            <span style="color: #000088;">$pagination</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> paginate<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                sql     <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'SELECT * FROM `dishes`'</span><span style="color: #339933;">,</span>
                theader    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'ID,Dish_name,Dish_price,Dish_Dir,Manipulation'</span><span style="color: #339933;">,</span>
                tbody    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;tr&gt;&lt;td&gt;{var:dish_id}&lt;/td&gt;&lt;td&gt;{var:dish_name}&lt;/td&gt;&lt;td&gt;{var:dish_sm_price}&lt;/td&gt;&lt;td&gt;{var:dish_dir}&lt;/td&gt;&lt;td&gt;{var:dish_id;fun:show_del}&lt;/td&gt;&lt;/tr&gt;'</span><span style="color: #339933;">,</span>
                linkmode <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>
                orderbys <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'dish_id:ID;dish_name:NAME;dish_sm_price:PRICE'</span><span style="color: #339933;">,</span>
                clientsort <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span>
            <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
            <span style="color: #000088;">$pagination</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>第二种模式的调用代码:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">            <span style="color: #000000; font-weight: bold;">function</span> show_del<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;&lt;input type=button value=<span style="color: #006699; font-weight: bold;">$id</span>&gt;&quot;</span><span style="color: #339933;">;</span>    
            <span style="color: #009900;">&#125;</span>
            <span style="color: #000088;">$pagination</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> paginate<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                sql     <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'SELECT * FROM `dishes`'</span><span style="color: #339933;">,</span>
                theader    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'ID,Dish_name,Dish_price,Dish_Dir,Manipulation'</span><span style="color: #339933;">,</span>
                tbody <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;div&gt;dish_id:{var:dish_id}&lt;br&gt;dish_name:{var:dish_name}&lt;br&gt;dish_price:{var:dish_sm_price}&lt;/div&gt;'</span><span style="color: #339933;">,</span>
                mode <span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>
                orderbys <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'dish_id:ID;dish_name:NAME;dish_sm_price:PRICE'</span><span style="color: #339933;">,</span>
                clientsort <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span>
            <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
            <span style="color: #000088;">$pagination</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>类的代码:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> paginate<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// data show in this page</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$count</span><span style="color: #339933;">;</span>                <span style="color: #666666; font-style: italic;">// total count of the records</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$page</span><span style="color: #339933;">;</span>                <span style="color: #666666; font-style: italic;">// page number of this page</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$sql</span><span style="color: #339933;">;</span>                <span style="color: #666666; font-style: italic;">// total records sql, including 'order by' clause</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$limit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">12</span><span style="color: #339933;">;</span>        <span style="color: #666666; font-style: italic;">// how many records to show in this page</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$mode</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// 2 modes, 0 for one record in one line with headers; </span>
                            <span style="color: #666666; font-style: italic;">//          1 for multiple records in one line without headers</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$theaders</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// headers for mode 0, like &quot;ID,姓名,电话,...&quot;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$tbody</span><span style="color: #339933;">;</span>                <span style="color: #666666; font-style: italic;">// cycle body</span>
                            <span style="color: #666666; font-style: italic;">// for mode 0, $tbody is like &quot;&lt;tr&gt;&lt;td&gt;{var:id;fun:fun1}&lt;/td&gt;...&lt;td&gt;{var:value;fun:fun2}&lt;/td&gt;&lt;/tr&gt;&quot;</span>
                            <span style="color: #666666; font-style: italic;">// for mode 1, $tbody is like &quot;&lt;div&gt;{var:id;fun:fun1}&lt;/div&gt;&quot;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$rnpl</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// Records Number Per Line, just for mode 1.</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$linkmode</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>        <span style="color: #666666; font-style: italic;">// temporarily 2 like modes. One displays page numbers by combo box; another displays them directly.</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$rnthis</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// Records Number in THIS page. It equals to $limit, but probably not in the last page.</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$colnames</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">// colomn names in this table</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$pagenum</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// total page number</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$maxpagenum</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">11</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// for linkmode 1, how many page numbers to show, odd number required    </span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$tableid</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'paginate_table'</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$orderbys</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// &quot;id:序号;name:姓名;phone:电话&quot;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$orderby</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$rank</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'ASC'</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$clientsort</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// close client sort as default</span>
    <span style="color: #000000; font-weight: bold;">function</span> paginate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$opts</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$db</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// ensure include db.class.php</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql</span>        <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'sql'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$theader</span>        <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'theader'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">theaders</span> <span style="color: #339933;">=</span> <span style="color: #990000;">split</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span><span style="color: #000088;">$theader</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tbody</span>    <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tbody'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span>     <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'page'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'limit'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">limit</span>    <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'limit'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'mode'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mode</span>        <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'mode'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'rnpl'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnpl</span>        <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'rnpl'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'linkmode'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">linkmode</span>    <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'linkmode'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #009900;">&#41;</span>         <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span>     <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">count</span>     <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span> <span style="color: #339933;">=</span> <span style="color: #990000;">ceil</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">count</span><span style="color: #339933;">/</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">limit</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">&gt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'orderbys'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderbys</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'orderbys'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderbys</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/order\s+by\s+.+(?:\s+(?:a)|(?:de)sc)?/i'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$getorderby</span> <span style="color: #339933;">=</span> <span style="color: #990000;">split</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">,</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'orderby'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$getorderby</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderby</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$getorderby</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> 
                <span style="color: #000088;">$obs</span> <span style="color: #339933;">=</span> <span style="color: #990000;">split</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">':'</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderbys</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderby</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$obs</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$getorderby</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rank</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$getorderby</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot; ORDER BY `&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderby</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;` &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rank</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$thissql</span>        <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; limit &quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">limit</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;,&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">limit</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span>     <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetch_all</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$thissql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnthis</span>    <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$thissql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/\{var:(.+?)(;fun:.+?)?\}/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tbody</span><span style="color: #339933;">,</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">colnames</span>    <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'maxpagenum'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">maxpagenum</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'maxpagenum'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tableid'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tableid</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tableid'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'clientsort'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">clientsort</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$opts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'clientsort'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> getHeaders<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mode</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$headers_str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;thead&gt;&lt;tr&gt;&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">theaders</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$h</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #000088;">$headers_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;th&gt;<span style="color: #006699; font-weight: bold;">$h</span>&lt;/th&gt;&quot;</span><span style="color: #339933;">;</span>    
            <span style="color: #009900;">&#125;</span>
            <span style="color: #000088;">$headers_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;/tr&gt;&lt;/thead&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #000088;">$headers_str</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> show<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$show_str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderbys</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;排序依据:   &quot;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$orderbyss</span> <span style="color: #339933;">=</span> <span style="color: #990000;">split</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">';'</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderbys</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$orderbyss</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$ob</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/^(.+?)\:(.+)$/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$ob</span><span style="color: #339933;">,</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
                <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderby</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                    <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;orderby&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">orderby</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rank</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'ASC'</span>?<span style="color: #0000ff;">'DESC'</span><span style="color: #339933;">:</span><span style="color: #0000ff;">'ASC'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rank</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'ASC'</span>?<span style="color: #0000ff;">'↑'</span><span style="color: #339933;">:</span><span style="color: #0000ff;">'↓'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;title=按&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rank</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'ASC'</span>?<span style="color: #0000ff;">'降'</span><span style="color: #339933;">:</span><span style="color: #0000ff;">'升'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;序排列&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;   &quot;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;orderby&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; ASC&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'☆'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;title=按&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;升序排列&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;   &quot;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;table id=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tableid</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; cellspacing=1 '</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">clientsort</span>?<span style="color: #0000ff;">'clientsort=1'</span><span style="color: #339933;">:</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&gt;'</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mode</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;tbody&gt;'</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span>ceil<span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnthis</span><span style="color: #339933;">/</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnpl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;tr&gt;&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$j</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$j</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnpl</span><span style="color: #339933;">;</span> <span style="color: #000088;">$j</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  <span style="color: #666666; font-style: italic;">// ---------</span>
                    <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;td&gt;&quot;</span><span style="color: #339933;">;</span>
                    <span style="color: #000088;">$body</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tbody</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$k</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$k</span><span style="color: #339933;">&lt;</span>count<span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">colnames</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$k</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                        <span style="color: #000088;">$body</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/\{var:(&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">preg_quote</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">colnames</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;)(;fun:.+?)?\}/&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;{var:&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #339933;">*</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnpl</span><span style="color: #339933;">+</span><span style="color: #000088;">$j</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">colnames</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$2</span>}&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$body</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
                    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$j</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnthis</span><span style="color: #339933;">-</span><span style="color: #000088;">$i</span><span style="color: #339933;">*</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnpl</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/\{var:([\s\S]+?)(?:;fun:(.+?))?\}/e&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$2</span>('<span style="color: #006699; font-weight: bold;">$1</span>')&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$body</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;/td&gt;&quot;</span><span style="color: #339933;">;</span>    
                <span style="color: #009900;">&#125;</span>
                <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;/tr&gt;&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getHeaders</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;tbody&gt;'</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$j</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$j</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnthis</span><span style="color: #339933;">;</span> <span style="color: #000088;">$j</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  <span style="color: #666666; font-style: italic;">// ---------</span>
                <span style="color: #000088;">$body</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tbody</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$k</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$k</span><span style="color: #339933;">&lt;</span>count<span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">colnames</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$k</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                    <span style="color: #000088;">$body</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/\{var:(&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">preg_quote</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">colnames</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;)(;fun:.+?)?\}/&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;{var:&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$j</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">colnames</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$2</span>}&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$body</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/\{var:([\s\S]+?)(?:;fun:(.+?))?\}/e&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$2</span>('<span style="color: #006699; font-weight: bold;">$1</span>')&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$body</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;/tbody&gt;'</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLinks</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$show_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;/table&gt;'</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$show_str</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> getHref<span style="color: #009900;">&#40;</span><span style="color: #000088;">$parms</span><span style="color: #339933;">,</span> <span style="color: #000088;">$values</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$ps</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$parms</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span>count<span style="color: #009900;">&#40;</span><span style="color: #000088;">$parms</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #000088;">$ps</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$parms</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$values</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$ps</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$parms</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$values</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$link</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PHP_SELF'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;?&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$ps</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$link</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$k</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;=&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #339933;">,-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;&amp;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$link</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$link</span><span style="color: #339933;">;</span>        
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> getLink<span style="color: #009900;">&#40;</span><span style="color: #000088;">$parms</span><span style="color: #339933;">,</span> <span style="color: #000088;">$values</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$attr</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;&lt;a href='&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getHref</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$parms</span><span style="color: #339933;">,</span> <span style="color: #000088;">$values</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;' <span style="color: #006699; font-weight: bold;">$attr</span>&gt;<span style="color: #006699; font-weight: bold;">$str</span>&lt;/a&gt;&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> getLinks<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$links_str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;tfoot&gt;&lt;tr&gt;&lt;td colspan=&quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mode</span>?<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnpl</span><span style="color: #339933;">:</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">theaders</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; style='text-align:center'&gt;&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">linkmode</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;第&quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">limit</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;~&quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">limit</span><span style="color: #339933;">+</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rnthis</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;条/共&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">count</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;条记录 &quot;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;[&quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">1</span>?<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;首页&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;首页&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;] &quot;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;[&quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">1</span>?<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;上页&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;上页&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;] &quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">linkmode</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">maxpagenum</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$i</span><span style="color: #339933;">,</span><span style="color: #000088;">$i</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;class=thispage&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">else</span> <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$i</span><span style="color: #339933;">,</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">&lt;=</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">maxpagenum</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$startnum</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">else</span> <span style="color: #000088;">$startnum</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">maxpagenum</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">2</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">&lt;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">maxpagenum</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$endnum</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">else</span> <span style="color: #000088;">$endnum</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">maxpagenum</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">2</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$startnum</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                    <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$startnum</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #000088;">$startnum</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;=</span><span style="color: #000088;">$endnum</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$i</span><span style="color: #339933;">,</span><span style="color: #000088;">$i</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;clas=thispage&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">else</span> <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$i</span><span style="color: #339933;">,</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$endnum</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                    <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$endnum</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;[&quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span>?<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;下页&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;下页&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;] &quot;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;[&quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span>?<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getLink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;尾页&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;尾页&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;] &quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">linkmode</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;第&lt;select onchange=<span style="color: #000099; font-weight: bold;">\&quot;</span>javascript:location='&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getHref</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'.replace('page=','page='+this.value)<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;option value=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$i</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; selected&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$i</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/option&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">else</span> <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;option value=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$i</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$i</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/option&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>    
            <span style="color: #009900;">&#125;</span>
            <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;/select&gt;页/&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$links_str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;共&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagenum</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;页&lt;/td&gt;&lt;/tr&gt;&lt;/tfoot&gt;&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$links_str</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>样式设置js(需要先引用jquery.js)</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> setpaginatestyle<span style="color: #009900;">&#40;</span>paginate_table_id<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>paginate_table_id <span style="color: #339933;">==</span> undefined<span style="color: #009900;">&#41;</span> paginate_table_id <span style="color: #339933;">=</span> <span style="color: #3366CC;">'#paginate_table'</span><span style="color: #339933;">;</span>
    pbody <span style="color: #339933;">=</span> paginate_table_id <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&gt;tbody&gt;'</span><span style="color: #339933;">;</span>
    phead <span style="color: #339933;">=</span> paginate_table_id <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&gt;thead&gt;'</span><span style="color: #339933;">;</span>
    pfoot <span style="color: #339933;">=</span> paginate_table_id <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&gt;tfoot&gt;'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> tablebordercolor <span style="color: #339933;">=</span> <span style="color: #3366CC;">'#5d7e49'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> tdheight <span style="color: #339933;">=</span> <span style="color: #3366CC;">'24px'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> tdpadding <span style="color: #339933;">=</span> <span style="color: #3366CC;">'2px'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> oddtrbgcolor <span style="color: #339933;">=</span> <span style="color: #3366CC;">'#b4bcaf'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> eventrbgcolor <span style="color: #339933;">=</span> <span style="color: #3366CC;">'#fff'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> overtrbgcolor <span style="color: #339933;">=</span> <span style="color: #3366CC;">'#dedfdd'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> thbgcolor <span style="color: #339933;">=</span> <span style="color: #3366CC;">'#8b9f7f'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> thcolor <span style="color: #339933;">=</span> <span style="color: #3366CC;">'#fff'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> footerbgcolor <span style="color: #339933;">=</span> <span style="color: #3366CC;">'#fff'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> footeraborder <span style="color: #339933;">=</span> <span style="color: #3366CC;">'1px 3px 1px 3px'</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> tablewidth <span style="color: #339933;">=</span> <span style="color: #3366CC;">'450px'</span><span style="color: #339933;">;</span>
    $<span style="color: #009900;">&#40;</span>paginate_table_id<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span>tablebordercolor<span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'width'</span><span style="color: #339933;">:</span>tablewidth
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    $<span style="color: #009900;">&#40;</span>pbody<span style="color: #339933;">+</span><span style="color: #3366CC;">'tr&gt;td'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span>phead<span style="color: #339933;">+</span><span style="color: #3366CC;">'tr&gt;th'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span>pfoot<span style="color: #339933;">+</span><span style="color: #3366CC;">'tr&gt;td'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">'padding'</span><span style="color: #339933;">:</span>tdpadding<span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'height'</span><span style="color: #339933;">:</span>tdheight
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    $<span style="color: #009900;">&#40;</span>phead<span style="color: #339933;">+</span><span style="color: #3366CC;">'tr'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span>thbgcolor<span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'color'</span><span style="color: #339933;">:</span>thcolor
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span>pbody<span style="color: #339933;">+</span><span style="color: #3366CC;">'tr:odd'</span><span style="color: #009900;">&#41;</span>
                    .<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">,</span>oddtrbgcolor<span style="color: #009900;">&#41;</span>
                    .<span style="color: #660066;">hover</span><span style="color: #009900;">&#40;</span>
        <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span>overtrbgcolor<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span>oddtrbgcolor<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>        
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    $<span style="color: #009900;">&#40;</span>pbody<span style="color: #339933;">+</span><span style="color: #3366CC;">'tr:even'</span><span style="color: #009900;">&#41;</span>
                     .<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">,</span>eventrbgcolor<span style="color: #009900;">&#41;</span>
                     .<span style="color: #660066;">hover</span><span style="color: #009900;">&#40;</span>
        <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">,</span>overtrbgcolor<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">,</span>eventrbgcolor<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>        
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        
    $<span style="color: #009900;">&#40;</span>pfoot<span style="color: #339933;">+</span><span style="color: #3366CC;">'tr'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">,</span>footerbgcolor<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">unbind</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    $<span style="color: #009900;">&#40;</span>pfoot<span style="color: #339933;">+</span><span style="color: #3366CC;">'tr a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'padding'</span><span style="color: #339933;">,</span>footeraborder<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    $<span style="color: #009900;">&#40;</span>pfoot<span style="color: #339933;">+</span><span style="color: #3366CC;">'tr a.thispage'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span>oddtrbgcolor<span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'border'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'1px solid '</span><span style="color: #339933;">+</span>tablebordercolor
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span>paginate_table_id<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'clientsort'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'head'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;script language=&quot;javascript&quot; src=&quot;js/jquery.tablesorter.js&quot;&gt;&lt;/script&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        $<span style="color: #009900;">&#40;</span>paginate_table_id<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">tablesorter</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    setpaginatestyle<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/05/27/php%e5%88%86%e9%a1%b5%e7%b1%bb/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>php的mysql数据库操作类</title>
		<link>http://pwwang.com/2009/05/25/php%e7%9a%84mysql%e6%95%b0%e6%8d%ae%e5%ba%93%e6%93%8d%e4%bd%9c%e7%b1%bb/</link>
		<comments>http://pwwang.com/2009/05/25/php%e7%9a%84mysql%e6%95%b0%e6%8d%ae%e5%ba%93%e6%93%8d%e4%bd%9c%e7%b1%bb/#comments</comments>
		<pubDate>Mon, 25 May 2009 07:58:38 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=624</guid>
		<description><![CDATA[class dbconn &#123;

    var $conn = 0;

    function dbconn&#40;$dbhost,$dbuser,$dbpw,$dbname&#41;&#123;

<span class="readmore"><a href="http://pwwang.com/2009/05/25/php%e7%9a%84mysql%e6%95%b0%e6%8d%ae%e5%ba%93%e6%93%8d%e4%bd%9c%e7%b1%bb/" title="php的mysql数据库操作类">Read More: 2002 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> dbconn <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">function</span> dbconn<span style="color: #009900;">&#40;</span><span style="color: #000088;">$dbhost</span><span style="color: #339933;">,</span><span style="color: #000088;">$dbuser</span><span style="color: #339933;">,</span><span style="color: #000088;">$dbpw</span><span style="color: #339933;">,</span><span style="color: #000088;">$dbname</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dbhost</span><span style="color: #339933;">,</span><span style="color: #000088;">$dbuser</span><span style="color: #339933;">,</span><span style="color: #000088;">$dbpw</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">halt</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Connect to MySQL failed&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$serverinfo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_get_server_info</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$serverinfo</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">'4.1'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'charset'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SET character_set_connection=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'charset'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;,character_set_results=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'charset'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;,character_set_client=binary&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$serverinfo</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">'5.0'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SET sql_mode=''&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$dbname</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!@</span><span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dbname</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">halt</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Cannot use database'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> select_db<span style="color: #009900;">&#40;</span><span style="color: #000088;">$dbname</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!@</span><span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dbname</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">halt</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Cannot use database'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> server_info<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_get_server_info</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> insert_id<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SELECT LAST_INSERT_ID() as id'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;id&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> get_value<span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #339933;">,</span><span style="color: #000088;">$offset</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #000088;">$field</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$rt</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetch_all</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$rt</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$offset</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$field</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #000088;">$rt</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$offset</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$field</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> query<span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #339933;">,</span><span style="color: #000088;">$method</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #339933;">!</span><span style="color: #000088;">$query</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$error</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">halt</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Query Error: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$query</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> fetch_array<span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> fetch_all<span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$arr</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> affected_rows<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_affected_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> num_rows<span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_bool</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> num_fields<span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$SQL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_num_fields</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> escape_string<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> free_result<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$void</span> <span style="color: #339933;">=</span> <span style="color: #990000;">func_get_args</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$void</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_resource</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">get_resource_type</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">===</span><span style="color: #0000ff;">'mysql result'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #990000;">mysql_free_result</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$void</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> close<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">free_result</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #339933;">@</span><span style="color: #990000;">mysql_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">function</span> halt<span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br /&gt;&lt;br /&gt;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$sql</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br /&gt; '</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$db</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> dbconn<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;localhost:3306&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;root&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;howard&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/05/25/php%e7%9a%84mysql%e6%95%b0%e6%8d%ae%e5%ba%93%e6%93%8d%e4%bd%9c%e7%b1%bb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>类外函数调用类的成员变量和成员函数</title>
		<link>http://pwwang.com/2008/11/19/%e7%b1%bb%e5%a4%96%e5%87%bd%e6%95%b0%e8%b0%83%e7%94%a8%e7%b1%bb%e7%9a%84%e6%88%90%e5%91%98%e5%8f%98%e9%87%8f%e5%92%8c%e6%88%90%e5%91%98%e5%87%bd%e6%95%b0/</link>
		<comments>http://pwwang.com/2008/11/19/%e7%b1%bb%e5%a4%96%e5%87%bd%e6%95%b0%e8%b0%83%e7%94%a8%e7%b1%bb%e7%9a%84%e6%88%90%e5%91%98%e5%8f%98%e9%87%8f%e5%92%8c%e6%88%90%e5%91%98%e5%87%bd%e6%95%b0/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 16:26:40 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=5</guid>
		<description><![CDATA[首先希望大家不要把我当火星人 ^_^!

类外函数是不能直接调用类的成员变量和成员函数的,　以前根本没有意识到这样的问题

是这样的：

<span class="readmore"><a href="http://pwwang.com/2008/11/19/%e7%b1%bb%e5%a4%96%e5%87%bd%e6%95%b0%e8%b0%83%e7%94%a8%e7%b1%bb%e7%9a%84%e6%88%90%e5%91%98%e5%8f%98%e9%87%8f%e5%92%8c%e6%88%90%e5%91%98%e5%87%bd%e6%95%b0/" title="类外函数调用类的成员变量和成员函数">Read More: 722 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>首先希望大家不要把我当火星人 ^_^!</p>
<p>类外函数是不能直接调用类的成员变量和成员函数的,　以前根本没有意识到这样的问题</p>
<p>是这样的：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> varhead<span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> title<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> varhead<span style="color: #009900;">&#40;</span>title<span style="color: #339933;">=</span><span style="color: #0000ff;">'welcome'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #339933;">=</span>title<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> setTitle<span style="color: #009900;">&#40;</span>title<span style="color: #339933;">=</span><span style="color: #0000ff;">'welcome'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #339933;">=</span>title<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$varhead</span><span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> varhead<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//我先定义了这样一个类,　是用来设置网页的各种头部信息的.</span>
<span style="color: #666666; font-style: italic;">//并且将它实例化</span>
<span style="color: #000000; font-weight: bold;">function</span> isHome<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$varhead</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'welcome'</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'HomePage'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">//这是一个类外函数,　我想调类varhead的成员变量title的值.</span>
<span style="color: #666666; font-style: italic;">//但是没想到,　在函数isHome中怎么也得不到$varhead-&gt;title的值.</span>
<span style="color: #666666; font-style: italic;">//我开始意识到,　在类外函数中,　可能不能直接调用类的成员变量</span>
<span style="color: #666666; font-style: italic;">//我试过这样,　但仍然不行：</span>
<span style="color: #666666; font-style: italic;">/*
$t=$varhead-&gt;title;
function isHome(){
if($t=='welcome')echo 'HomePage';
}
*/</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>后来我在百度上找到一种解决办法,　就是在类外的函数中重新实例化一个类对象,　然后而进行调用.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> isHome<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$varhead1</span><span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> varhead<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$varhead1</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'welcome'</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'HomePage'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>这样是可以的,　可以得到$varhead1->title的值.</p>
<p>但是新的问题又出现了,　这个实例化的对象$varhead1和我原来实例化的对象$varhead是两个不同的对象,　也就是说,如果我先设置了title.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$varhead</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setTitle</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;products&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>这样对函数中的对象$varhead1将不会有任何的影响,　而$varhead1->title的值还将会是默认值’welcome’,　仍然判断不出该页是否首页.</p>
<p>后来再想到WP的一个插件CountPosts,　由于我改过这个插件,　在里面加了留言数,评论数以及文章的点击数,　发现这个插件里面的函数可以直接使用WP实例化的数据库类$wpdb,　但它每个函数前面都将这个对象声明为了全局变量.</p>
<p>于是我也试试,发现这样才是解决问题的根本途径：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> isHome<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$varhead</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$varhead</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'welcome'</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'HomePage'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>这样问题就得到了完美的解决.</p>
<p>也就是说要想从类外函数调用类的成员变量和成员函数就必须在类外的函数中global一下类(PS:我不知道这个操作叫什么, 什么不是声明吧),才能调用类的成员变量和函数.</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2008/11/19/%e7%b1%bb%e5%a4%96%e5%87%bd%e6%95%b0%e8%b0%83%e7%94%a8%e7%b1%bb%e7%9a%84%e6%88%90%e5%91%98%e5%8f%98%e9%87%8f%e5%92%8c%e6%88%90%e5%91%98%e5%87%bd%e6%95%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

