﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java,永远不敢言精通-随笔分类-php</title><link>http://www.blogjava.net/crazycoding/category/45066.html</link><description>God helps those who help themselves. </description><language>zh-cn</language><lastBuildDate>Tue, 24 Aug 2010 18:22:09 GMT</lastBuildDate><pubDate>Tue, 24 Aug 2010 18:22:09 GMT</pubDate><ttl>60</ttl><item><title>php Jason互转</title><link>http://www.blogjava.net/crazycoding/archive/2010/08/24/329740.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Tue, 24 Aug 2010 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2010/08/24/329740.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/329740.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2010/08/24/329740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/329740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/329740.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #800080;">$queryResult</span><span style="color: #000000;">=</span><span style="color: #008080;">mysql_query</span><span style="color: #000000;">(</span><span style="color: #800080;">$str</span><span style="color: #000000;">,</span><span style="color: #800080;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">conn))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$resultTable</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;DbTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$fields</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">array</span><span style="color: #000000;">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$rows</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">array</span><span style="color: #000000;">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(</span><span style="color: #800080;">$property</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">mysql_fetch_field</span><span style="color: #000000;">(</span><span style="color: #800080;">$queryResult</span><span style="color: #000000;">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$fields</span><span style="color: #000000;">[]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">array</span><span style="color: #000000;">(</span><span style="color: #800080;">$property</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">name</span><span style="color: #000000;">,</span><span style="color: #800080;">$property</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">type);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(</span><span style="color: #800080;">$row</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">mysql_fetch_array</span><span style="color: #000000;">(</span><span style="color: #800080;">$queryResult</span><span style="color: #000000;">,</span><span style="color: #000000;">MYSQL_NUM))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">foreach</span><span style="color: #000000;">(</span><span style="color: #800080;">$row</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$k</span><span style="color: #000000;">=&gt;</span><span style="color: #800080;">$v</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #008080;">is_numeric</span><span style="color: #000000;">(</span><span style="color: #800080;">$v</span><span style="color: #000000;">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$row</span><span style="color: #000000;">[</span><span style="color: #800080;">$k</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #008080;">floatval</span><span style="color: #000000;">(</span><span style="color: #800080;">$v</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$rows</span><span style="color: #000000;">[]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$row</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$resultTable</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">fields&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$fields</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$resultTable</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">rows&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$rows</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;DbTable<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$rows</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$fields</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$tableName</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectType:"DbTable",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;tableName:"tableName",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[col1Name,col1Type],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[col2Name,col2Tpye],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[col3Name,col3Type]],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[row1Col1,row1Col2,row1Col3],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[row2Col1,row2Col2,row2Col3],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[row3Col1,row3Col2,row3Col3]]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;toString()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$jsonFields</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;json_encode(</span><span style="color: #800080;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">fields);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$josnRows</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;json_encode(</span><span style="color: #800080;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">rows);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">{objectType:\</span><span style="color: #000000;">"</span><span style="color: #000000;">DbTable\</span><span style="color: #000000;">"</span><span style="color: #000000;">,tableName:</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">tableName</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">,fields:</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$jsonFields</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">,rows:</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$josnRows</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">}</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;DataSet<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$tables</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectType:"DataSet",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tables:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectType:"DbTable",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tableName:"table1Name",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[col1Name,col1Type],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[col2Name,col2Tpye],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[col3Name,col3Type]],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[row1Col1,row1Col2,row1Col3],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[row2Col1,row2Col2,row2Col3],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[row3Col1,row3Col2,row3Col3]]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectType:"DbTable",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tableName:"table2Name",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[col1Name,col1Type],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[col2Name,col2Tpye],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[col3Name,col3Type]],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[row1Col1,row1Col2,row1Col3],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[row2Col1,row2Col2,row2Col3],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[row3Col1,row3Col2,row3Col3]]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;$resultDataSet&nbsp;=&nbsp;new&nbsp;DataSet();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;$tables[]&nbsp;=&nbsp;DbTable1-&gt;toString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;$tables[]&nbsp;=&nbsp;DbTable2-&gt;toString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;$resultDataSet-&gt;tables&nbsp;=&nbsp;$tables;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;$resultDataSet-&gt;toString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;toString()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">{objectType:\</span><span style="color: #000000;">"</span><span style="color: #000000;">DataSet\</span><span style="color: #000000;">"</span><span style="color: #000000;">,tables:[</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">foreach</span><span style="color: #000000;">(</span><span style="color: #800080;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">tables&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$k</span><span style="color: #000000;">=&gt;</span><span style="color: #800080;">$v</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">.=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">{</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">tables[</span><span style="color: #800080;">$k</span><span style="color: #000000;">]</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">},</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">substr</span><span style="color: #000000;">(</span><span style="color: #800080;">$result</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,-</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">.=</span><span style="color: #000000;">"</span><span style="color: #000000;">]}</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">echo</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;insert&nbsp;into&nbsp;tableName&nbsp;(col1,col2,col3)&nbsp;values&nbsp;('v1','v2','v3')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;jsonStr:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"rows"&nbsp;:&nbsp;[col1,col2,col3]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;$jsonStr<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;$tableName<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;rowInsert(</span><span style="color: #800080;">$jsonStr</span><span style="color: #000000;">,</span><span style="color: #800080;">$tableName</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$jsonDecode</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;json_decode(</span><span style="color: #800080;">$jsonStr</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">insert&nbsp;into&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$tableName</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;values(</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">foreach</span><span style="color: #000000;">(</span><span style="color: #800080;">$jsonDecode</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">rows&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$k</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$v</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">.=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">'</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$v</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">',</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">substr</span><span style="color: #000000;">(</span><span style="color: #800080;">$result</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,-</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">.=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;UPDATE&nbsp;tableName&nbsp;SET&nbsp;col1&nbsp;=&nbsp;col1Value,&nbsp;col2&nbsp;=&nbsp;col2Value&nbsp;WHERE&nbsp;1=1&nbsp;AND&nbsp;primaryKey&nbsp;=&nbsp;key<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;$jsonStr<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;$tableName<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;rowUpdate(</span><span style="color: #800080;">$jsonStr</span><span style="color: #000000;">,</span><span style="color: #800080;">$tableName</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$jsonDecode</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;json_decode(</span><span style="color: #800080;">$jsonStr</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$sql</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">DESCRIBE&nbsp;`</span><span style="color: #000000;">'</span><span style="color: #000000;">.</span><span style="color: #800080;">$tableName</span><span style="color: #000000;">.</span><span style="color: #000000;">'</span><span style="color: #000000;">`;</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$descRs</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">mysql_query</span><span style="color: #000000;">(</span><span style="color: #800080;">$sql</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$setStr</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">UPDATE&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$tableName</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;SET</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$whereStr</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;WHERE&nbsp;true&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$i</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(</span><span style="color: #800080;">$row</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">mysql_fetch_array</span><span style="color: #000000;">(</span><span style="color: #800080;">$descRs</span><span style="color: #000000;">,</span><span style="color: #000000;">MYSQL_NUM))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #800080;">$row</span><span style="color: #000000;">[</span><span style="color: #000000;">3</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">PRI</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$whereStr</span><span style="color: #000000;">.=</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;AND&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$row</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;=&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$jsonDecode</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">rows[</span><span style="color: #800080;">$i</span><span style="color: #000000;">]</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">'&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$setStr</span><span style="color: #000000;">.=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$row</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;=&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$jsonDecode</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">rows[</span><span style="color: #800080;">$i</span><span style="color: #000000;">]</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">',</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$i</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$setStr</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">substr</span><span style="color: #000000;">(</span><span style="color: #800080;">$setStr</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,-</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$setStr</span><span style="color: #000000;">.</span><span style="color: #800080;">$whereStr</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;DELETE&nbsp;tableName&nbsp;WHERE&nbsp;1=1&nbsp;AND&nbsp;primaryKey&nbsp;=&nbsp;key<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;$jsonStr<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;$tableName<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;rowDelete(</span><span style="color: #800080;">$jsonStr</span><span style="color: #000000;">,</span><span style="color: #800080;">$tableName</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$jsonDecode</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;json_decode(</span><span style="color: #800080;">$jsonStr</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$sql</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">DESCRIBE&nbsp;`</span><span style="color: #000000;">'</span><span style="color: #000000;">.</span><span style="color: #800080;">$tableName</span><span style="color: #000000;">.</span><span style="color: #000000;">'</span><span style="color: #000000;">`;</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$descRs</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">mysql_query</span><span style="color: #000000;">(</span><span style="color: #800080;">$sql</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;DELETE&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$tableName</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;WHERE&nbsp;true&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(</span><span style="color: #800080;">$row</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">mysql_fetch_array</span><span style="color: #000000;">(</span><span style="color: #800080;">$descRs</span><span style="color: #000000;">,</span><span style="color: #000000;">MYSQL_NUM))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #800080;">$row</span><span style="color: #000000;">[</span><span style="color: #000000;">3</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">PRI</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">.=</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;AND&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$row</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;=&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$jsonDecode</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">rows[</span><span style="color: #800080;">$i</span><span style="color: #000000;">]</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">'&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$i</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$result</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/crazycoding/aggbug/329740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2010-08-24 10:19 <a href="http://www.blogjava.net/crazycoding/archive/2010/08/24/329740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】win下Apache2.2+php5+MySQL5+zend的环境搭建配置</title><link>http://www.blogjava.net/crazycoding/archive/2010/06/06/322871.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Sun, 06 Jun 2010 01:01:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2010/06/06/322871.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/322871.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2010/06/06/322871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/322871.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/322871.html</trackback:ping><description><![CDATA[1.便捷方法：装一体化环境，如果你并非打算深入，或者刚入门。则可以先用一体化环境来配置。优点是下完安装即可使用，1分钟就能搞定。如果原来系统中装有IIS，则把端口设为 81或者其他非80端口。（以下皆为apache+php+mysql+zend）<br />
&nbsp;<br />
&nbsp; 1&gt; php4的一体化环境<br />
http://www.onlinedown.net/soft/22078.htm<br />
&nbsp;<br />
&nbsp; 2&gt; php5的一体化环境<br />
http://www.onlinedown.net/soft/42567.htm<br />
&nbsp;<br />
2.如果你需要一个较为稳健而功能强劲的配置环境，则参看以下。本文采用最新版本的php、apache、mysql、zend。<br />
&nbsp;<br />
其实，因为网上很多文章其实也没什么错，但有些细节的地方有问题。特别是在apache2.2.4与php5模块化安装的整合上。<br />
&nbsp;<br />
先准备安装文件，几个安装文件我用华军软件园的下载地址，大家放心下：<br />
&nbsp;<br />
apache2.2.4<br />
最新版http://www.onlinedown.net/soft/11528.htm<br />
发帖时最新版http://ytcnc.onlinedown.net/down/apache_2.2.4-win32-x86-no_ssl.zip<br />
&nbsp;<br />
php5.2.3<br />
最新版http://www.onlinedown.net/soft/1772.htm<br />
发帖时最新版http://sx.huajun.net/down/php-5.2.3-Win32.zip<br />
&nbsp;<br />
Mysql5.0.41<br />
最新版http://www.onlinedown.net/soft/3573.htm<br />
发帖时最新版http://sccnc.onlinedown.net/down/mysql-5.0.41-win32.zip<br />
&nbsp;<br />
zend optimizer 3.2.6<br />
最新版http://www.onlinedown.net/soft/32228.htm<br />
发帖时最新版http://sccnc.onlinedown.net/down/ZendOptimizer-3.2.6-Windows-i386.zip<br />
&nbsp;<br />
phpmyadmin<br />
最新版http://www.onlinedown.net/soft/2616.htm<br />
发帖时最新版http://sccnc.onlinedown.net/down/phpMyAdmin-2.10.3-rc1-all-languages.zip<br />
&nbsp;<br />
-----------------------------------------------------------------------<br />
&nbsp;<br />
1.安装apache2.2.4至某个目录比如我的是D:"apache2<br />
2.解压php5到D:"apache2"php5目录下<br />
3.安装mysql5到D:"apache2"mysql目录下<br />
&nbsp;<br />
4.配置apache：<br />
&nbsp;1)打开d:"apache2"conf目录下的httpd.conf文件。<br />
&nbsp;2)apache httpd.conf设置<br />
&nbsp; A.网站主目录设置：搜索DocumentRoot "D:/apache2/htdocs"<br />
&nbsp; 修改引号中的地址，为apache网页主目录。也就是http://localhost: 端口号的目录。<br />
&nbsp; B.端口设置：搜索 listen，改为 Listen 81（此例中以81为端口）。如不装IIS可保留默认值为80。设为81，则主页为 http://localhost:81 否则为http://localhost<br />
&nbsp; C.加载php5模块化安装：搜索Loadmodule，在后面加一行：<br />
LoadModule php5_module d:/apache2/php/php5apache2_2.dll<br />
&nbsp;<br />
（这里是很多网上攻略出错的地方，apache2.2版本以下一般为<br />
LoadModule php5_module d:/apache2/php/php5apache2.dll<br />
apache2.2以上的版本则不行。更有甚者，竟然把php5apache2.dll改写成支持apache2.2的了，牛是很牛了，但不知道中国搞技术的到底是怎么了，都懒得自主思考，一点怀疑精神都没有。）<br />
&nbsp; <br />
&nbsp; D. php格式解析<br />
&nbsp;&nbsp; 搜索 addType application在后面加一行：<br />
&nbsp;&nbsp; AddType application/x-httpd-php .php<br />
&nbsp; <br />
&nbsp; E.字符集<br />
<br />
&nbsp; 搜索 AddDefaultCharset ISO-8859-1 将其改为<br />
<br />
&nbsp; AddDefaultCharset GB2312<br />
<br />
5.配置php<br />
&nbsp; 至D:"apache2"php目录下，把 php.ini-dist或php.ini- recommended拷贝至c:"windows目录下，改名为php.ini。拷贝D:"apache2"php目录下的php5ts.dll,libmysql.dll至C:"windows"system32目录下<br />
&nbsp;<br />
&nbsp;&nbsp; 配置php.ini<br />
&nbsp;&nbsp; A.找到extension_dir设置为 "d:"apache2"php"ext"绝对路径，否则有些环境中会出错。<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; b.打开功能扩展<br />
搜索以下行，把前面的分号删除。比如<br />
&#8220;;extension=php_mysql.dll&#8221;改为&#8220;extension=php_mysql.dll<br />
&#8221;<br />
#下面两行为mysql5必备，记得php_mysqli.dll必须加载，否则连不上。<br />
extension=php_mysql.dll &nbsp;<br />
extension=php_mysqli.dll<br />
&nbsp;<br />
#php连sql server，有用到的就设置一下<br />
extension=php_mssql.dll<br />
<br />
#curl功能扩展，想用php写些脚本处理远程服务期的响应消息的可以打开<br />
extension=php_curl.dll<br />
&nbsp;<br />
#GD库安装，此功能打开可用数据库以二进制存储图片<br />
extension=php_gd2.dll<br />
&nbsp;<br />
#东亚语系必备，增加字符处理速度<br />
extension=php_mbstring.dll<br />
&nbsp;<br />
&nbsp;&nbsp; C.实用功能自定义配置<br />
&nbsp;<br />
#session的存储目录。如果有内存虚拟硬盘，可以把用到的暂存处理目录都设置到<br />
内存虚拟盘中进一步提高服务器响应速度。<br />
&nbsp;&nbsp; session.save_path = D:/apache2/htdocs/php_session <br />
&nbsp;<br />
#这个是每个脚本运行的最长时间，可以自己修改加长，单位秒<br />
max_execution_time = 30<br />
<br />
#这是每个脚本可以消耗的时间，单位也是秒<br />
max_input_time = 60<br />
<br />
#这个是脚本运行最大消耗的内存，最好设为16M以上，有的程序要求，比如openads<br />
<br />
memory_limit = 16M<br />
<br />
#上载文件的最大许可大小，一般post大小&gt;upload_max_filesize。比如我的设置：<br />
<br />
post_max_size = 300M<br />
<br />
upload_max_filesize = 250M<br />
<br />
6.至此，配置完成大半。<br />
<br />
mysql与zend只要按需安装即可。装完后重启apache服务器即可。<br />
<br />
7.最后推荐个好东西，apache的monitor.exe，可以控制apache、myql、 IIS、sql server等服务器开关。好东西，我找了挺久的。感谢原作者，抱歉忘了大名<br />
<br />
http://www.1thz.cn/apachemonitor.exe<br />
&nbsp; <br />
8.如果您对服务器性能要求很高，我这里推荐您一个非常棒的平台组合。lighttpd可以取代apache，更轻，性能更优秀。 PostPre SQL 取代 Mysql，极其强大的开源数据库，完全满足企业商务级数据库需求。
<img src ="http://www.blogjava.net/crazycoding/aggbug/322871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2010-06-06 09:01 <a href="http://www.blogjava.net/crazycoding/archive/2010/06/06/322871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP新手上路</title><link>http://www.blogjava.net/crazycoding/archive/2010/06/05/321763.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Sat, 05 Jun 2010 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2010/06/05/321763.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/321763.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2010/06/05/321763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/321763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/321763.html</trackback:ping><description><![CDATA[【基于shinyE来的PHP编码概要清单++】<br />
一 调试<br />
1、观察变量 使用<span style="font-family: monospace; font-size: medium;"><span style="color: rgb(0, 0, 187);">var_dump</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$var_name</span><span style="color: rgb(0, 119, 0);">)</span></span>观察变量类型与内容<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用<span style="color: rgb(0, 16, 255);">getType（$var_name）</span>查看所属类型<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用<span style="color: rgb(8, 23, 255);">defined("")</span><span style="color: rgb(8, 23, 255);">和isset()</span>查看常量是否已定义<br />
<br />
2、观察程序执行效率，使用WinCacheGrind载入xdebug目录中的文件<br />
<br />
二、特殊变量<br />
&nbsp;&nbsp;&nbsp; 1、$_SERVER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可用var_dump($_SERVER)观察变量作用。储存了常用信息。<br />
<br />
&nbsp;&nbsp;&nbsp; 2、$_SESSION<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用session_start()之后启用会话。<br />
<br />
&nbsp;&nbsp;&nbsp; 3、$_COOKIE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie<br />
<br />
&nbsp;&nbsp;&nbsp; 4、$_REQUEST<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 保存的是post/get的变量<br />
<br />
&nbsp;&nbsp;&nbsp; 5、$_POST<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 仅限post<br />
<br />
&nbsp;&nbsp;&nbsp; 6、$_GET<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 仅限get //$_GET["username"]<br />
<br />
&nbsp;&nbsp;&nbsp; 7、$_FILES<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form提交的文件<br />
<br />
&nbsp;&nbsp;&nbsp; 8、定义常量：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; define("name","...");//常量只能包含标量数据，只能在声明的时候赋值，并不能在运行时改变<br />
<br />
&nbsp;&nbsp;&nbsp; 9、几个体统常量：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __FILE__、__LINE__、PHP_VERSION、PHP_OS<br />
<br />
<br />
三、类的说明<br />
&nbsp;&nbsp;&nbsp; 1、一个简易的类<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class test{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private $pro1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static $pro2;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function do1(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static function do2(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 非静态的调用<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $t = new test();<br />
&nbsp;&nbsp;&nbsp;&nbsp; $t-&gt;pro1;<br />
&nbsp;&nbsp;&nbsp;&nbsp; $t-&gt;do1();<br />
&nbsp;&nbsp;&nbsp;&nbsp; 静态调用<br />
&nbsp;&nbsp;&nbsp;&nbsp; test::pro2;<br />
&nbsp;&nbsp;&nbsp;&nbsp; test::do2();<br />
&nbsp;&nbsp;&nbsp; 2、构造函数和析构函数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function __construct() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function __destruct() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
<br />
四、自动加载类<br />
&nbsp;&nbsp;&nbsp; 1、当调用的类未找到，会自动调用以下函数。如果调用之后类找到了，则继续执行；仍旧未找到，则报错<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function __autoload($class_name){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include $class_name.'.php';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; 2、spl_autoload_register可以注册一个 __autoload函数<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 自动加载类可以使代码变得更优雅，无需提前include，但是如果有复杂的路径则将导致性能下降<br />
&nbsp;&nbsp;&nbsp;&nbsp; (磁盘IO是影响PHP性能的一个要点，另一个是数据库)<br />
<br />
<br />
五、数组<br />
&nbsp;&nbsp;&nbsp; 1、数组是一个K/V结构的变量，可以存储多类型的数据（多数据类型）<br />
&nbsp;&nbsp;&nbsp; 2、多维数组类似JSON格式，长度可变<br />
&nbsp;&nbsp;&nbsp; 3、数组的声明：索引数组：数组的索引值是整数，0开始<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关联数组：数组以字符串作为索引值<br />
&nbsp;&nbsp;&nbsp; 4、数组遍历：①for($i=0;$i&lt;count($arr);$i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "\$arr["."]=".$arr[$i]."&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ②for($arr as $value)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $value."&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($arr as $key=&gt;$value)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "\$arr[".$key."]=".$value."&lt;br&gt;";<br />
<br />
<br />
六、PHP手册<br />
&nbsp;&nbsp;&nbsp; 遇上不认识的函数请打开PHP手册，使用索引功能快速查找函数参数和返回值。也可使用netbeans自动提示功能参阅其详情。<br />
<img src ="http://www.blogjava.net/crazycoding/aggbug/321763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2010-06-05 17:25 <a href="http://www.blogjava.net/crazycoding/archive/2010/06/05/321763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]高危nginx文件类型错误解析漏洞 </title><link>http://www.blogjava.net/crazycoding/archive/2010/05/21/321567.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Fri, 21 May 2010 11:59:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2010/05/21/321567.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/321567.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2010/05/21/321567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/321567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/321567.html</trackback:ping><description><![CDATA[<div id="blogDetailDiv" style="font-size: 16px;">
<p>漏洞介绍：nginx是一款高性能的web服务器，使用非常广泛，其不仅经常被用作反向代理，也可以非常好的支持PHP的运行。80sec发现其中存在一个较为严重的安全问题，默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析，这将导致严重的安全问题，使得恶意的攻击者可能攻陷支持php的nginx服务器。</p>
<p><br />
漏洞分析：nginx默认以cgi的方式支持php的运行，譬如在配置文件当中可以以</p>
<p><code><br />
<font face="NSimsun">location ~ ".php$ {<br />
root
html;<br />
fastcgi_pass 127.0.0.1:9000;<br />
fastcgi_index
index.php;<br />
fastcgi_param SCRIPT_FILENAME
/scripts$fastcgi_script_name;<br />
include
fastcgi_params;<br />
}<br />
</font></code><br />
的方式支持对php的解析，location对请求进行选择的时候会使用URI环境变量进行选择，其中传递到后端Fastcgi的关键变量
SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定，而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的，这里就是产生问题的点。而为了较好的支持PATH_INFO的提取，在PHP
的配置选项里存在cgi.fix_pathinfo选项，其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。<br />
那么假设存在一个http://www.80sec.com/80sec.jpg，我们以如下的方式去访问<br />
</p>
<p>http://www.80sec.com/80sec.jpg/80sec.php</p>
<p><br />
<font face="宋体">将会得到一个URI<br />
</font><code><br />
/80sec.jpg/80sec.php<br />
</code><br />
<font face="宋体">经过location指令，该请求将会交给后端的fastcgi处理，nginx为其设置环境变量SCRIPT_FILENAME，内容为<br />
</font><code><br />
/scripts/80sec.jpg/80sec.php<br />
</code><br />
<font face="宋体">而在其他的webserver如lighttpd当中，我们发现其中的SCRIPT_FILENAME被正确的设置为<br />
</font><code><br />
/scripts/80sec.jpg<br />
</code><br />
<font face="宋体">所以不存在此问题。<br />
后端的fastcgi在接受到该选项时，会根据fix_pathinfo配置决定是否对SCRIPT_FILENAME进行额外的处理，一般情况下如果不对fix_pathinfo进行设置将影响使用PATH_INFO进行路由选择的应用，所以该选项一般配置开启。Php通过该选项之后将查找其中真正的脚本文件名字，查找的方式也是查看文件是否存在，这个时候将分离出SCRIPT_FILENAME和PATH_INFO分别为<br />
</font><code><br />
/scripts/80sec.jpg和80sec.php<br />
</code><br />
<font face="宋体">最后，以/scripts/80sec.jpg作为此次请求需要执行的脚本，攻击者就可以实现让nginx以php来解析任何类型的文件了。</font></p>
<p>POC：
访问一个nginx来支持php的站点，在一个任何资源的文件如robots.txt后面加上/80sec.php，这个时候你可以看到如下的区别：</p>
<p>访问http://www.80sec.com/robots.txt<br />
<code><br />
<font face="NSimsun">HTTP/1.1
200 OK<br />
Server: nginx/0.6.32<br />
Date: Thu, 20 May 2010 10:05:30
GMT<br />
Content-Type: text/plain<br />
Content-Length: 18<br />
Last-Modified: Thu, 20
May 2010 06:26:34 GMT<br />
Connection: keep-alive<br />
Keep-Alive:
timeout=20<br />
Accept-Ranges:
bytes<br />
</font></code><br />
访问访问http://www.80sec.com/robots.txt/80sec.php<br />
<code><br />
<font face="NSimsun">HTTP/1.1 200 OK<br />
Server: nginx/0.6.32<br />
Date: Thu, 20 May 2010
10:06:49 GMT<br />
Content-Type: text/html<br />
Transfer-Encoding:
chunked<br />
Connection: keep-alive<br />
Keep-Alive: timeout=20<br />
X-Powered-By:
PHP/5.2.6<br />
</font></code><br />
其中的Content-Type的变化说明了后端负责解析的变化，该站点就可能存在漏洞。</p>
<p>漏洞厂商：http://www.nginx.org</p>
<p>解决方案：</p>
<p>我们已经尝试联系官方，但是此前你可以通过以下的方式来减少损失<br />
<code><br />
<font face="NSimsun">关闭cgi.fix_pathinfo为0<br />
</font></code><br />
或者<br />
<code><br />
<font face="NSimsun">if ( $fastcgi_script_name ~ "..*"/.*php ) {<br />
return
403;<br />
}</font><br />
<br />
文章来源:80SEC</code></p>
</div>
<img src ="http://www.blogjava.net/crazycoding/aggbug/321567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2010-05-21 19:59 <a href="http://www.blogjava.net/crazycoding/archive/2010/05/21/321567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>