<?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; mysql</title>
	<atom:link href="http://www.rainmoe.com/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rainmoe.com</link>
	<description>One code, one world ...</description>
	<lastBuildDate>Thu, 29 Dec 2011 14:04:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Memcached的杯具和Phpmyadmin的茶几</title>
		<link>http://www.rainmoe.com/2010/08/09/fml/</link>
		<comments>http://www.rainmoe.com/2010/08/09/fml/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 17:09:04 +0000</pubDate>
		<dc:creator>小邪</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wtf]]></category>

		<guid isPermaLink="false">http://www.evlos.org/?p=1991</guid>
		<description><![CDATA[> 哎呀呀 ╮(￣▽￣)╭，小白鼠不好当呀，今天差点给它吓死。莫名其妙的出现鸟数据库查询数狂暴的现象。

> 大家看图最底下一行就知道鸟，当时小邪震的不是一般的精。杯具啊，差点让 VPS 负载上到 1.0 鸟。



<span class="readmore"><a href="http://www.rainmoe.com/2010/08/09/fml/" title="Memcached的杯具和Phpmyadmin的茶几">阅读全文——共1253字</a></span>]]></description>
			<content:encoded><![CDATA[<p>> 哎呀呀 ╮(￣▽￣)╭，小白鼠不好当呀，今天差点给它吓死。莫名其妙的出现鸟数据库查询数狂暴的现象。<br />
> 大家看图最底下一行就知道鸟，当时小邪震的不是一般的精。杯具啊，差点让 VPS 负载上到 1.0 鸟。</p>
<p><img src='http://www.rainmoe.com/wp-content/uploads/2010/08/Cap0000834.png' /></p>
<p><span id="more-1991"></span><strong>一. 狂暴的 Mysql 数据库查询：</strong></p>
<p>> 本来小邪用着 object-cache.php Memcached内存版，配合 Widget-cache 可以把数据库查询降到 2 个。<br />
> 结果今天重启了 VPS，就杯具了。突然好像负载就一直往上升，不知道什么情况，后来有事出去鸟。</p>
<p><img src='http://www.rainmoe.com/wp-content/uploads/2010/08/Cap0000835.png' /></p>
<p>> 然后回来的时候，震精了 ( ⊙o⊙ )。查询数疯狂升高到将近 2000 个，花了时间 8 秒钟。额滴个神啊。<br />
> 后来找来找去，以为是刚刚修改 Function.php 的缘故，结果恢复原版问题依旧，突然醒悟 (˙<>˙)。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;!–- Info : 433 queries in 3.442 seconds –&gt; &lt;!–- Info : 524 queries in 3.180 seconds –&gt;
&lt;!–- Info : 1943 queries in 7.465 seconds –&gt; &lt;!–- Info : 2243 queries in 7.977 seconds –&gt;
//当时恐怖的查询数，上面的是首页，下面的是文章页

$memcache = new Memcache;
$memcache-&gt;connect('localhost', 11211) or die (&quot;Could not connect&quot;);
//尝试连接 Memcached 主程序
</pre>
<p>> 看来是数据库查询的缓存插件出了问题，移除了 Object-cache.php 之后正常了。<br />
> 真是奇了怪了，然后尝试了连接 Memcached 主程序，结果显示无法连接。囧，原来是开机木有启动。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
/usr/local/memcached/bin/memcached -d -m 32 -u root -p 11211 -c 2048
#立马启动，回头加到开机执行列表
</pre>
<p><strong>二. 杯具的 Phpmyadmin 删除按键：</strong></p>
<p>> 最近对 9haow.cn 提供了免费赞助空间，因为小张对 Mice 经常表示服务器鸭梨超大 - -，╮(￣▽￣")╭。</p>
<p><img src='http://www.rainmoe.com/wp-content/uploads/2010/08/Cap0000836.png' /></p>
<p>> 结果后来弄好 Mysql 数据库，小邪发现有几个不用的插件建立的表，十分占空间，就建议 Mice 删除。<br />
> 小邪原则上不会主动碰其他用户的任何数据。然后 Mice 说小邪可随意处理，结果，结果就杯具了。</p>
<p>> 小邪把列表里要删除的几个表复选框都选中，本来应该在底下选择删除，结果直接点了右上角的删除。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
DROP DATABASE `mice_9haow` //结果就 Drop 掉了整个数据库
</pre>
<p>> 啥都木有了 (((φ(◎ロ◎;)φ)))，幸好啊，有 WordPress Database Backup 插件的保佑，得救鸟。<br />
> 小邪面壁中 。。。。( ￣ ￣)σ…( ＿ ＿)ノ｜壁。</p>
<p><strong>三. 尾记：</strong></p>
<p>> 明天早上就该去韩国玩鸟，希望到时候也能上网吧，只要能在宾馆里面找到 110v 转 220v 的转换器。<br />
> 到时候就可以发照片咯，嘿嘿嘿 o(*￣▽￣*)ゞ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainmoe.com/2010/08/09/fml/feed/</wfw:commentRss>
		<slash:comments>71</slash:comments>
		</item>
		<item>
		<title>使用正则式整理数据库中IMG标签</title>
		<link>http://www.rainmoe.com/2010/01/05/use-regex-to-clear-the-mix-of-tag-img/</link>
		<comments>http://www.rainmoe.com/2010/01/05/use-regex-to-clear-the-mix-of-tag-img/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 16:40:35 +0000</pubDate>
		<dc:creator>小邪</dc:creator>
				<category><![CDATA[作品 [Work]]]></category>
		<category><![CDATA[img]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regex]]></category>

		<guid isPermaLink="false">http://www.evlos.org/?p=1887</guid>
		<description><![CDATA[> 小邪最近因为流量紧缺启用了防盗链系统来着，所以为了保证防盗警示图片的大小正常。

> 只好把所有图片的 IMG 标签中除了 SRC 指向图片的 URL 属性以外，其他全部清除。



<span class="readmore"><a href="http://www.rainmoe.com/2010/01/05/use-regex-to-clear-the-mix-of-tag-img/" title="使用正则式整理数据库中IMG标签">阅读全文——共1129字</a></span>]]></description>
			<content:encoded><![CDATA[<p>> 小邪最近因为流量紧缺启用了防盗链系统来着，所以为了保证防盗警示图片的大小正常。<br />
> 只好把所有图片的 IMG 标签中除了 SRC 指向图片的 URL 属性以外，其他全部清除。</p>
<p><img src="http://www.rainmoe.com/wp-content/uploads/old/Capture1056.jpg" /></p>
<p>> 因为国内网上的正则式教程十分紧缺，只能找到少量的教程，有时候很难学习全面。<br />
> 所以小邪也只能按照自己多次的测试得出的结果来稍微讲解一下呢，能学多少就看你的咯。</p>
<p><span id="more-1887"></span><strong>一. 有关正则式的函数分类：</strong></p>
<p>> <strong>正则表达式函数库（Perl 兼容）</strong>-</p>
<p>> preg_grep --  返回与模式匹配的数组单元<br />
> preg_match_all -- 进行全局正则表达式匹配<br />
> preg_match -- 进行正则表达式匹配<br />
> preg_quote -- 转义正则表达式字符<br />
> preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换<br />
> preg_replace -- 执行正则表达式的搜索和替换<br />
> preg_split -- 用正则表达式分割字符串</p>
<p>> <strong>正则表达式函数库（POSIX 扩展）</strong>-</p>
<p>> ereg_replace -- 替换正则表达式<br />
> ereg -- 正则表达式匹配<br />
> eregi_replace -- 不区分大小写替换正则表达式<br />
> eregi -- 不区分大小写的正则表达式匹配<br />
> split -- 用正则表达式将字符串分割到数组中<br />
> spliti --  用正则表达式不区分大小写将字符串分割到数组中<br />
> sql_regcase --  产生用于不区分大小的匹配的正则表达式</p>
<p>> 这两组函数库提供了对 POSIX 和 PERL 两种风格的正则表达式的支持。<br />
> 区别不大，PERL 的表达式两边要加上 “/”，而且据说 PERL 运行效率高一点。</p>
<p><strong>二. 程序运行LOG日志记录：</strong></p>
<p>> 呵呵，这个是程序运行的时候会陆续输出的运行记录，方便检查。<br />
> 第一次运行的时候像下面这样，然后刷新，被替换和替换为的数据会变成相同的。<br />
> 这样就表示替换成功了，恭喜发财，嘿嘿嘿 O(∩_∩)O。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
Post Id =&gt; 1864
//正在被替换的数据库中文章的ID
&lt;img src=&quot;http://www.evlos.org/uploads/1451_020.jpg&quot;
 class=&quot;alignnone&quot; width=&quot;600&quot; height=&quot;437&quot; /&gt;
//在数据库中的文章表里面查找到的IMG标签
&lt;img src=&quot;http://www.evlos.org/uploads/1451_020.jpg&quot; /&gt;
//将要被替换成为的精简过的IMG标签
ID Count : 1
//此文章中的图片数量统计
Success ~!
//成功更新了Mysql数据库中的数据

Post Id =&gt; 1875
&lt;img src=&quot;http://www.evlos.org/uploads/1451_031.jpg&quot;
 class=&quot;alignnone&quot; width=&quot;600&quot; height=&quot;235&quot; /&gt;
&lt;img src=&quot;http://www.evlos.org/uploads/1451_031.jpg&quot; /&gt;
&lt;img src=&quot;http://www.evlos.org/uploads/1451_030.jpg&quot;
 class=&quot;alignnone&quot; width=&quot;600&quot; height=&quot;156&quot; /&gt;
&lt;img src=&quot;http://www.evlos.org/uploads/1451_030.jpg&quot; /&gt;
&lt;img src=&quot;http://www.evlos.org/uploads/1451_031.jpg&quot;
 class=&quot;alignnone&quot; width=&quot;600&quot; height=&quot;235&quot; /&gt;
&lt;img src=&quot;http://www.evlos.org/uploads/1451_031.jpg&quot; /&gt;
&lt;img src=&quot;http://www.evlos.org/uploads/1451_028.jpg&quot;
 class=&quot;alignnone&quot; width=&quot;600&quot; height=&quot;186&quot; /&gt;
&lt;img src=&quot;http://www.evlos.org/uploads/1451_028.jpg&quot; /&gt;
&lt;img src=&quot;http://www.evlos.org/uploads/1451_029.jpg&quot;
 class=&quot;alignnone&quot; width=&quot;600&quot; height=&quot;246&quot; /&gt;
&lt;img src=&quot;http://www.evlos.org/uploads/1451_029.jpg&quot; /&gt;
ID Count : 5
Success ~!

-------------------
Count : 296 //整个WP_posts表中，所有的的图片总数
</pre>
<p><strong>三. 程序源代码：</strong></p>
<p>>  以下内容保存为任意名称的 PHP 文件，填好配置，运行即可。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
$sqlc_host = &quot;localhost&quot;; //Mysql服务器地址
$sqlc_user = &quot;&quot;; //用户名
$sqlc_psw = &quot;&quot;; //密码
$sqlc_dba = &quot;wordpress&quot;; //数据库名
echo '&lt;html&gt;&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Img标签批量清洗程序&lt;/title&gt;
&lt;/head&gt;&lt;body&gt;';
$img_count = 0;
$sqlc_con = mysql_connect($sqlc_host,$sqlc_user,$sqlc_psw);
mysql_select_db($sqlc_dba,$sqlc_con);
mysql_query(&quot;set names UTF8&quot;);
$sqlc_inner = mysql_query(&quot;SELECT * FROM wp_posts&quot;);
while($sqlc_row = mysql_fetch_array($sqlc_inner)) {
	$cid = $sqlc_row['ID'];
	echo &quot;&lt;br /&gt;\n&quot;.'Post Id =&gt; '.$cid.&quot;&lt;br /&gt;\n&quot;;
	$img_change = $sqlc_row['post_content'];
	$img_preg = '/&lt;img src=[^&gt;]+&gt;/';
	preg_match_all($img_preg,$img_change,$img_find);
	$img_count_id = $img_count;
	foreach ($img_find[0] as $value) {
		$img_count++;
		$value_echo = str_ireplace('&lt;','&amp;lt;',$value);
		$value_echo = str_ireplace('&gt;','&amp;gt;',$value_echo);
		echo $value_echo.&quot;&lt;br/&gt;\n&quot;;
		preg_match(&quot;(http://.+\.(jpg|png|JPG|PNG))&quot;,$value,$img_url);
		if (isset($img_url[0])) {
			$result = '&lt;img src=&quot;'.$img_url[0].'&quot; /&gt;';
		}
		else {
			$result = '';
		}
		$result_echo = str_ireplace('&lt;','&amp;lt;',$result);
		$result_echo = str_ireplace('&gt;','&amp;gt;',$result_echo);
		echo $result_echo.&quot;&lt;br/&gt;\n&quot;;
		str_ireplace(&quot;\n&quot;,&quot;&quot;,$value);
		if ($result &lt;&gt; '&lt;img src=&quot;&quot; /&gt;'&amp;&amp;$cid &lt;&gt; 1887&amp;&amp;$result &lt;&gt; '') {
			$img_change = str_ireplace($value,$result,$img_change);
		}
	}
	echo 'ID Count : '.($img_count - $img_count_id).&quot;&lt;br/&gt;\n&quot;;
	$img_change = addslashes($img_change);
	$change = $img_change;
	if (mysql_query(&quot;update wp_posts set post_content='&quot;.$change.&quot;' where id=&quot;.$cid.&quot;&quot;)) {
		echo 'Success ~!';
	}
	else {
		echo &quot;Error : &quot; . mysql_error();
	}
}
echo '&lt;br/&gt;-------------------&lt;br/&gt;Count : '.$img_count;
echo '&lt;/body&gt;&lt;/html&gt;';
mysql_close($sqlc_con);
?&gt;</pre>
<p><strong>四. 程序运行原理：</strong></p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
mysql_query(&quot;set names UTF8&quot;);
//这里将数据库查询时候的字符集设定为 UTF-8，否则得到的数据会是乱码

$img_preg = '/&lt;img src=[^&gt;]+&gt;/';
preg_match_all($img_preg,$img_change,$img_find);
//这里使用正则式将 IMG 标签全部找出来，并把整个标签放到 $img_find 变量里

preg_match(&quot;(http://.+.(jpg|png))&quot;,$value,$img_url);
//这里把 IMG 标签之中的 URL 提取出来

$result = '&lt;img src=&quot;'.$img_url[0].'&quot; /&gt;';
if ($result &lt;&gt; '&lt;img src=&quot;&quot; /&gt;') {
	$img_change = str_ireplace($value,$result,$img_change);
}
//这里把提取之后重新组合的 IMG 标签替换进去

$img_change = addslashes($img_change);
//小邪觉得这个是亮点，这个函数能够让我们把 HTML 代码顺利存储到数据库
</pre>
<p><strong>五. 程序中使用过的正则式：</strong></p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
$img_preg = &quot;/&lt;img src=[^&gt;]+&gt;/&quot;;
</pre>
<p>> 找到以首先找到 IMG 标签的头部，然后后面的中括号里是一个条件。<br />
> 条件表达的是，这里跟着的字符是除了右尖括号以外的字符。<br />
> 右中括号的后边是个加号，意思是 “重复一次或更多次”。<br />
> 最后以右尖括号作为结尾，这样子就可以捕捉 IMG 标签咯。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
$img_url_preg = &quot;(http://.+.(jpg|png))&quot;
</pre>
<p>> 首先这里两边要用括号，表示包含分枝条件。然后找到以 HTTP:// 开头的字符。<br />
> 接着用 “.” 表示 “匹配除换行符以外的任意字符”，然后用加号标示重复次数。<br />
> 加一个斜杠标示转义字符，就是说后面那个点是普通字符，不是正则式的内容。<br />
> 然后加个括号，里面是分枝条件，标示最后是以 jpg 或者 png 结尾的。</p>
<p><strong>六. 常用的正则式语法：</strong></p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
.	匹配除换行符以外的任意字符
w	匹配字母或数字或下划线或汉字
s	匹配任意的空白符
d	匹配数字
	匹配单词的开始或结束
^	匹配字符串的开始
$	匹配字符串的结束

*	重复零次或更多次
+	重复一次或更多次
?	重复零次或一次
{n}	重复n次
{n,}	重复n次或更多次
{n,m}	重复n到m次

W	匹配任意不是字母，数字，下划线，汉字的字符
S	匹配任意不是空白符的字符
D	匹配任意非数字的字符
B	匹配不是单词开头或结束的位置
[^x]	匹配除了x以外的任意字符
[^aeiou]	匹配除了aeiou这几个字母以外的任意字符

*?	重复任意次，但尽可能少重复
+?	重复1次或更多次，但尽可能少重复
??	重复0次或1次，但尽可能少重复
{n,m}?	重复n到m次，但尽可能少重复
{n,}?	重复n次以上，但尽可能少重复
</pre>
<p><strong>七. Addslashes 预处理函数：</strong></p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
$a = &quot;img src=&quot;'1''2'20100101/18/59_006.jpg&quot; /&quot;;
echo addslashes($a);
?&gt;
//输出 img src=\&quot;\'1\'\'2\'20100101/18/59_006.jpg\&quot; /
</pre>
<p>> 预处理之后的样子在上面代码框中，这样存储就不会出现错误了。<br />
> 而使用 Phpmyadmin 或者 mysql_query 之类的东东读取数据库的数据。<br />
> 得到的都是预处理前的数据，灰常奇妙 (*^__^*) 嘻嘻。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainmoe.com/2010/01/05/use-regex-to-clear-the-mix-of-tag-img/feed/</wfw:commentRss>
		<slash:comments>82</slash:comments>
		</item>
		<item>
		<title>小邪的菠萝阁空间流量迅速告急</title>
		<link>http://www.rainmoe.com/2009/12/28/website-traffic-is-almost-beyond-the-limit/</link>
		<comments>http://www.rainmoe.com/2009/12/28/website-traffic-is-almost-beyond-the-limit/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 11:58:57 +0000</pubDate>
		<dc:creator>小邪</dc:creator>
				<category><![CDATA[奇客 [Geek]]]></category>
		<category><![CDATA[cpanel]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[traffic]]></category>

		<guid isPermaLink="false">http://www.evlos.org/?p=1864</guid>
		<description><![CDATA[> Orz，这俩天真是太可怕鸟，小邪的菠萝阁空间流量每天要被消耗掉 700MB 左右。

> ╮(╯_╰)╭，真是吓到人了，春哥保佑，嘎嘎，所以不得已找了个空间做图床。



<span class="readmore"><a href="http://www.rainmoe.com/2009/12/28/website-traffic-is-almost-beyond-the-limit/" title="小邪的菠萝阁空间流量迅速告急">阅读全文——共1549字</a></span>]]></description>
			<content:encoded><![CDATA[<p>> Orz，这俩天真是太可怕鸟，小邪的菠萝阁空间流量每天要被消耗掉 700MB 左右。<br />
> ╮(╯_╰)╭，真是吓到人了，春哥保佑，嘎嘎，所以不得已找了个空间做图床。</p>
<p><img src="http://www.rainmoe.com/wp-content/uploads/old/Capture0958.jpg" /></p>
<p>> 在这里小邪提供大家一个数据库字符串替换 PHP 程序，很方便的，嘿嘿。<br />
> P.s. 杯具，好想看下雪的说，昨天都开始下雪子了，今天居然是晴天，春哥保佑。</p>
<p><span id="more-1864"></span><strong>1. 使用 SQL 语句更新数据库中图片的URL：</strong></p>
<p>> 呵呵，在 Phpmyadmin 中的 SQL 语句执行选项里输入喜爱面代码即可。<br />
> 再下面的代码则是一个例子，若是小邪需要用时的写法，O(∩_∩)O。</p>
<p>> 有童鞋建议把文章写的短一点，不然看着头晕，所以小邪就短短地写了喔。<br />
> 嘿嘿，这一篇文章挺简单的，请期待下一篇强力文章 O(∩_∩)O。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
update wp_posts set post_content = REPLACE(
post_content,'被替换的字符','替换成的字符')
</pre>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
update wp_posts set post_content = REPLACE(
post_content,'http://www.evlos.org/global/uploads/'
,'http://www.evlos.org/global/uploads/')
</pre>
<p><strong>2. 数据库字符串替换 PHP 程序：</strong></p>
<p>> 下面代码保存成任意的 PHP 文件，然后在浏览器中运行即可。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
$db_url = 'localhost'; //数据库地址
$db_user = 'root'; //用户名
$db_psw = ''; //密码
$db_base = 'wordpress'; //数据库名称
$db_tab = 'wp_posts'; //表名
$db_list = 'post_content'; //字段名
$target = 'http://www.evlos.org/global/uploads/'; //要替换的字符
$result = 'http://www.evlos.org/global/uploads/'; //被替换的字符

$db = mysql_connect($db_url,$db_user,$db_psw);
mysql_select_db($db_base,$db);

$sql = &quot;update $db_tab set $db_list = REPLACE(
$db_list,'$target'
,'$result')&quot;;

mysql_query($sql);
?&gt;
</pre>
<p><strong>3. 进阶 - 带UI的数据库字符串替换 PHP 程序：</strong></p>
<p>> 同样的，请将下面代码保存成任意的 PHP 文件，然后在浏览器中运行即可。</p>
<p><img src="http://www.rainmoe.com/wp-content/uploads/old/Capture0962.jpg" /></p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
$warn = 0;
if (isset($_POST['url'])&amp;&amp;isset($_POST['user'])&amp;&amp;isset($_POST['psw'])
	&amp;&amp;isset($_POST['dba'])&amp;&amp;isset($_POST['tab'])&amp;&amp;isset($_POST['list'])
	&amp;&amp;isset($_POST['target'])&amp;&amp;isset($_POST['result'])) {
	if ($_POST['url'] &lt;&gt; ''&amp;&amp;$_POST['user'] &lt;&gt; ''&amp;&amp;$_POST['psw'] &lt;&gt; ''
	&amp;&amp;$_POST['dba'] &lt;&gt; ''&amp;&amp;$_POST['tab'] &lt;&gt; ''&amp;&amp;$_POST['list'] &lt;&gt; ''
	&amp;&amp;$_POST['target'] &lt;&gt; ''&amp;&amp;$_POST['result'] &lt;&gt; '') {
		$db_url = $_POST['url']; //数据库地址
		$db_user = $_POST['user']; //用户名
		$db_psw = $_POST['psw']; //密码
		$db_base = $_POST['dba']; //数据库名称
		$db_tab = $_POST['tab']; //表名
		$db_list = $_POST['list']; //字段名
		$target = $_POST['target']; //要替换的字符
		$result = $_POST['result']; //被替换的字符
		$db = mysql_connect($db_url,$db_user,$db_psw);
		mysql_select_db($db_base,$db);
		$sql = &quot;update $db_tab set $db_list = REPLACE(
		$db_list,'$target'
		,'$result')&quot;;
		mysql_query($sql);
		mysql_close($db);
		$warn = 2;
	}
	else {
		$warn = 1;
	}
}
?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
&quot;http://w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://url=w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;数据库字符串替换程序&lt;/title&gt;
&lt;style&gt;
#main{margin:0 auto;text-align:center;width:650px;color:#777;
background-color:#eef2fa;border:1px solid #d8e3e8;margin-top:30px;}
#main .content{text-align:left;padding:30px;}a{color:#777;
text-decoration:none;}a:hover{color:#777;text-decoration:underline;
}img{margin:30px 0;background:#f7f7f7;border:1px solid #bebebe;padding:3px;}
p{padding:0;margin:0;}.textsubmit{margin-top:20px;
border:1px solid #BDC7D8;font-size:15px;
padding:3px;background:#f0f0f0;color:#000;width:100px;height:30px;
}.textfield{text-align:center;margin:5px 0;border:1px solid #BDC7D8;
font-size:12px;padding:3px;width:400px;background:#fff;
color:#000;height:20px;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;main&quot; style=&quot;height:1.5em;color:#777;margin-top:30px;
margin-bottom:-20px;padding:10px 0;&quot;&gt;
&lt;p style=&quot;float:left;padding:0px 20px;&quot;&gt;
&lt;a href=&quot;http://www.evlos.org/&quot;&gt;邪罗刹的菠萝阁&lt;/a&gt; » 数据库字符串替换程序
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;main&quot; style=&quot;&lt;?php if ($warn == 0) { echo 'display:none;'; } ?&gt;
height:1.5em;color:#777;margin-top:30px;
margin-bottom:-20px;padding:10px 0;&quot;&gt;
&lt;p style=&quot;float:left;padding:0px 20px;&quot;&gt;
&lt;?php
if ($warn == 1) { echo '&gt; 请填写完整 O(∩_∩)O。'; }
else if ($warn == 2) { echo '&gt; 如果没出现错误提示的话，那一定是成功了，O(∩_∩)O。'; }
?&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;main&quot; style=&quot;&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;form action=&quot;&quot; method=&quot;post&quot;&gt;
&lt;p&gt;&lt;input class=&quot;textfield&quot; type=&quot;text&quot; name=&quot;url&quot;
&lt;?php if (isset($_POST['url'])) {echo 'value=&quot;'.$_POST['url'].'&quot;';}
else {echo 'value=&quot;localhost&quot;';} ?&gt; /&gt; =&gt; Mysql地址&lt;/p&gt;
&lt;p&gt;&lt;input class=&quot;textfield&quot; type=&quot;text&quot; name=&quot;user&quot;
&lt;?php if (isset($_POST['user'])) {echo 'value=&quot;'.$_POST['user'].'&quot;';}
else {echo 'value=&quot;root&quot;';} ?&gt; /&gt; =&gt; 用户名&lt;/p&gt;
&lt;p&gt;&lt;input class=&quot;textfield&quot; type=&quot;text&quot; name=&quot;psw&quot;
&lt;?php if (isset($_POST['psw'])) {echo 'value=&quot;'.$_POST['psw'].'&quot;';}
else {echo 'value=&quot;123&quot;';} ?&gt; /&gt; =&gt; 密码&lt;/p&gt;
&lt;p&gt;&lt;input class=&quot;textfield&quot; type=&quot;text&quot; name=&quot;dba&quot;
&lt;?php if (isset($_POST['dba'])) {echo 'value=&quot;'.$_POST['dba'].'&quot;';}
else {echo 'value=&quot;wordpress&quot;';} ?&gt; /&gt; =&gt; 数据库&lt;/p&gt;
&lt;p&gt;&lt;input class=&quot;textfield&quot; type=&quot;text&quot; name=&quot;tab&quot;
&lt;?php if (isset($_POST['tab'])) {echo 'value=&quot;'.$_POST['tab'].'&quot;';}
else {echo 'value=&quot;wp_posts&quot;';} ?&gt; /&gt; =&gt; 表&lt;/p&gt;
&lt;p&gt;&lt;input class=&quot;textfield&quot; type=&quot;text&quot; name=&quot;list&quot;
&lt;?php if (isset($_POST['list'])) {echo 'value=&quot;'.$_POST['list'].'&quot;';}
else {echo 'value=&quot;post_content&quot;';} ?&gt; /&gt; =&gt; 字段&lt;/p&gt;
&lt;p&gt;&lt;input class=&quot;textfield&quot; type=&quot;text&quot; name=&quot;target&quot;
&lt;?php if (isset($_POST['target'])) {echo 'value=&quot;'.$_POST['target'].'&quot;';}
else {echo 'value=&quot;http://www.evlos.org/global/uploads/&quot;';} ?&gt;
/&gt; =&gt; 被替换的字符&lt;/p&gt;
&lt;p&gt;&lt;input class=&quot;textfield&quot; type=&quot;text&quot; name=&quot;result&quot;
&lt;?php if (isset($_POST['result'])) {echo 'value=&quot;'.$_POST['result'].'&quot;';}
else {echo 'value=&quot;http://www.soulsolo.org/wp-content/uploads/&quot;';
} ?&gt; /&gt; =&gt; 替换成的字符&lt;/p&gt;
&lt;p style=&quot;text-align:right;padding-right:60px;&quot;&gt;
&lt;input class=&quot;textsubmit&quot; type=&quot;submit&quot; value=&quot;执行&quot; /&gt;&lt;/p&gt;
&lt;/form&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;main&quot; style=&quot;height:1.5em;color:#777;margin-top:10px;&quot;&gt;
&lt;p style=&quot;float:left;padding:0 10px;&quot;&gt;Copyright © 2009-2010 Evlos&lt;/p&gt;
&lt;p style=&quot;float:right;padding:0 10px;&quot;&gt;
&lt;a href=&quot;javascript:void(location.replace
(location))&quot;&gt;[ 刷新 ]&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>> 杯具，每天700MB太吓人鸟，也只是这俩天，不过最近一天比一天多。<br />
> 怀疑是爬虫来着，采集整站的那种，嘎嘎，连页面缓存一小时都有70多。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainmoe.com/2009/12/28/website-traffic-is-almost-beyond-the-limit/feed/</wfw:commentRss>
		<slash:comments>99</slash:comments>
		</item>
		<item>
		<title>如何使用PHP操作Mysql数据库</title>
		<link>http://www.rainmoe.com/2009/12/27/php-and-mysql/</link>
		<comments>http://www.rainmoe.com/2009/12/27/php-and-mysql/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 13:59:16 +0000</pubDate>
		<dc:creator>小邪</dc:creator>
				<category><![CDATA[探索 [Explore]]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.evlos.org/?p=1857</guid>
		<description><![CDATA[> 呵呵，因为昨天小邪没法用电脑，结果没有一日一博，所以今天要发两篇补上去才行呢。

> 简单讲一下如何操作 Mysql 数据库，看完的童鞋应该至少有写一个留言本的能力了。



<span class="readmore"><a href="http://www.rainmoe.com/2009/12/27/php-and-mysql/" title="如何使用PHP操作Mysql数据库">阅读全文——共2810字</a></span>]]></description>
			<content:encoded><![CDATA[<p>> 呵呵，因为昨天小邪没法用电脑，结果没有一日一博，所以今天要发两篇补上去才行呢。<br />
> 简单讲一下如何操作 Mysql 数据库，看完的童鞋应该至少有写一个留言本的能力了。</p>
<p><img src="http://www.rainmoe.com/wp-content/uploads/old/Capture0944.jpg" /></p>
<p>> 当然咯，这里还没有讲如何过滤非法的字符，所以写保存文本的程序可别忘记了呢。<br />
> P.s. 小邪这里应该也快下雪了呢，杭州都已经下了，这里离杭州三小时路程，好期待呢。</p>
<p><span id="more-1857"></span><strong>1. 首先建立一个连接信息配置文件：</strong></p>
<p>> 嘿嘿，这个就是传说中的 Config.php 了，把 Mysql 服务器信息，用户名密码。<br />
> 以及要操作的数据库名称填上去就好咯，因为小邪在这里只打算操作一个表。<br />
> 所以把表的名称也填在这里了，下面代码的 $db_tab 就代表表名咯。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
$db_url = 'localhost'; //url
$db_user = 'root'; //username
$db_psw = '753951'; //password

$db_base = 'data'; //database
$db_tab = 'user'; //table
?&gt;
</pre>
<p><strong>2. 引用 PHP 文件：</strong></p>
<p>> 引用的意思就是在这里调用 Config.php 里面的配置信息。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
include ('config.php');
?&gt;
</pre>
<p>> <strong>Include() 函数</strong> -<br />
> 此函数可获得指定文件中的所有文本，并把文本拷贝到使用 include 函数的文件中。</p>
<p>> <strong>Require() 函数</strong> -<br />
> 此函数与 include() 相同，不同的是它对错误的处理方式。</p>
<p>> <strong>两者的区别</strong> -<br />
> Include() 函数会生成一个警告（但是脚本会继续执行）。<br />
> 而 Require() 函数会生成一个致命错误（Fatal error）。<br />
> 即在错误发生后脚本会停止执行。</p>
<p><strong>3. 如何连接与断开：</strong></p>
<p>> 建议是如果某个 PHP 文件操作数据库比较频繁，那么就在文件尾部断开。<br />
> 如果只是在文件某个部分需要的话，请在部分结束的时候及时断开，保持性能。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
include ('config.php');
$db = mysql_connect($db_url,$db_user,$db_psw);
if (!$db) { die('Could not connect: ' . mysql_error()); }
mysql_close($db);
?&gt;
</pre>
<p>> 我们在一个变量 $db 中存放了在脚本中以备稍后使用的连接<br />
> 下面的判断就是若连接不成功则提示错误，当然这个不是必要的，呵呵。<br />
> Mysql_close 函数就是在脚本未执行完前提前与数据库断开连接。<br />
> 其实只要 PHP 脚本的运行一结束，就会关闭连接。<br />
> 所以如果打算结束以后再关闭的话，就不需要写上此函数了。</p>
<p><strong>4. 如何建立一个数据库：</strong></p>
<p>> 这个命令一般来说在虚拟主机上是无法使用的。<br />
> 因为在虚拟主机上的账号并不提供建立数据库的权限。<br />
> 所以在本地测试或者VPS之类的，才可以用喔。</p>
<p>> 下面的代码执行后就会建立一个叫 data 的数据库，并提示成功或失败。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
include ('config.php');
$db = mysql_connect($db_url,$db_user,$db_psw);
if (mysql_query(&quot;CREATE DATABASE test&quot;,$db)) {
 echo &quot;Database created&quot;;
}
else {
 echo &quot;Error creating database: &quot; . mysql_error();
}
?&gt;
</pre>
<p><strong>5. 字段的可用类型：</strong></p>
<p><img src="http://www.rainmoe.com/wp-content/uploads/old/Capture0941.jpg" /></p>
<p><strong>6. 如何建立一个表：</strong></p>
<p>> ^_^，这里则是建立一个表以及两个字段的过程。<br />
> 下面代码先连接了数据库，然后建立在 $db_base 数据库中建立 $db_tab 表。</p>
<p>> 之后建立两个字段，可以理解为表格的俩列，字段 Username 为 Text 类型。<br />
> 字段 ID 为自动填充，即 Insert 一行数据之后，字段 ID 会自动加上一。<br />
> 注意！！如果删除中间的某项数据，后面的 ID 是不会自动修改的。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
include('config.php');
$db = mysql_connect($db_url,$db_user,$db_psw);
$sql = &quot;CREATE TABLE `&quot;.$db_base.&quot;`.`&quot;.$db_tab.&quot;` (
	`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	`username` TEXT NOT NULL
) ENGINE = MyISAM;&quot;;
mysql_query($sql,$db);
?&gt;
</pre>
<p><strong>7. 如何插入一行数据：</strong></p>
<p>> 使用下面的代码可以在 $db_base 数据库的 $db_tab 表中插入一行。<br />
> 字段 ID 为 NULL （表示要 Mysql 自己自动增加），Username 为 $user 的数据。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
include('config.php');
$db = mysql_connect($db_url,$db_user,$db_psw);
$sql = &quot;
 INSERT INTO `&quot;.$db_base.&quot;`.`&quot;.$db_tab.&quot;` (`id`, `username`)
 VALUES ('NULL', '&quot;.$user.&quot;');
&quot;;
mysql_query($sql,$db);
?&gt;
</pre>
<p><strong>8. 如何读取数据：</strong></p>
<p>> 下面的代码就是查找 ID 为 $id 的某行数据，找到之后赋值为 $sql。<br />
> 然后通过 Mysql_fetch_array 函数转换为一个数组 $ary。<br />
> 则数组中的 $ary['username'] 就是 ID 为 $id 的用户名。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
include('config.php');
$db = mysql_connect($db_url,$db_user,$db_psw);
$sql = mysql_query(&quot;SELECT * FROM `&quot;.$db_tab.&quot;` WHERE `id` = &quot;.$id);
$ary = mysql_fetch_array($sql);
echo $ary['username'];
?&gt;
</pre>
<p><strong>9. 很牛的 Print_r 函数：</strong></p>
<p>> 嘿嘿，使用这个函数可以直接输出整个数组到屏幕上，很强的说。<br />
> 像上面的 $ary 数组就可以用下面的代码来打印出来。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
print_r($ary);
</pre>
<p><img src="http://www.rainmoe.com/wp-content/uploads/old/Capture0942.jpg" /></p>
<p><strong>10. 如何获得一个表的行数：</strong></p>
<p>> 唔，实际上目前小邪只看到过使用下面这个效率比较低的方法。<br />
> 或者创建一个小表来专门统计其他表的数据数目 ╮(╯▽╰)╭。</p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
include('config.php');
$db = mysql_connect($db_url,$db_user,$db_psw);
$sql = &quot;select id from &quot;.$db_tab;
$query = mysql_query($sql);
$num = mysql_num_rows($query);
echo $num;
?&gt;
</pre>
<p><strong>11. 下面给出小邪的一个<em>倒序</em>输出一个表的两个字段的程序：</strong></p>
<p><img src="http://www.rainmoe.com/wp-content/uploads/old/Capture0943.jpg" /></p>
<pre class="brush: php; auto-links: false; html-script: false; title: ; notranslate">
&lt;?php
$db_url = 'localhost'; //Url
$db_user = 'root'; //Username
$db_psw = '753951'; //Password
$db_base = 'urls'; //Database
$db_tab = 'data'; //Table
//Line ( ID , url )

$db = mysql_connect($db_url,$db_user,$db_psw);
mysql_select_db($db_base,$db);
$file_pagelist = 20;
$page_end = $file_pagelist;

function count_read() {
	global $db_tab;
	$sql = &quot;SELECT * FROM &quot;.$db_tab;
	$query = mysql_query($sql);
	$num = mysql_num_rows($query);
	return $num;
}

$page_start = count_read();
$page_end = $page_start - $file_pagelist;
function data_read($url_code) {
	global $db_tab;
	$sql = mysql_query(&quot;SELECT * FROM `&quot;.$db_tab.&quot;` WHERE `id` = &quot;.$url_code);
	$ary = mysql_fetch_array($sql);
	if ($ary['url']&lt;&gt;'') {
		return $ary['url'];
	}
	else {
		return 'null';
	}
}

$count = count_read();
$start = '&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
 &quot;http://w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://url=w3.org/1999/xhtml&quot;&gt;&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;小邪的打印机&lt;/title&gt;&lt;style type=&quot;text/css&quot;&gt;
a{color:#555;text-decoration:none;}
#wrap{padding-top:10px;font-size:15px;width:850px;margin:0 auto;}
li{list-style:none;height:22px;}&lt;/style&gt;&lt;/head&gt;&lt;body&gt;
&lt;div id=&quot;wrap&quot;&gt;&lt;div id=&quot;main&quot;&gt;&lt;div class=&quot;rcontent&quot;&gt;';
echo $start;

if (isset($_GET['page'])) {
	$pagenum = $_GET['page'];
	if ($pagenum &gt; 1) {
		$page_start = $page_start - $file_pagelist*($pagenum-1) - 1;
		$page_end = $page_start - $file_pagelist;
		$pagenum_last = $pagenum - 1;
		$pagenum_next = $pagenum + 1;
		$last = '?page='.$pagenum_last;
		$next = '?page='.$pagenum_next;
	}
	else {
		$last = '#';
		$next = '?page=2';
	}
}
else {
	$last = '#';
	$next = '?page=2';
}

for ($i=$page_start;$i&gt;=$page_end;$i--) {
	$content = data_read($i);
	$content_save = $content;
	if (strlen($content) &gt;= 80) {
		$content = substr($content,0,80).' ...';
	}
	$list = '&lt;li&gt;&lt;span class=&quot;li_count&quot;&gt;[ '.$i.' ]&lt;/span&gt; -&gt;
&lt;span class=&quot;url&quot;&gt;&lt;a target=&quot;_blank&quot; href=&quot;' .$content_save.'&quot;&gt;
'.$content.'&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;';
	if ($i &gt;= 0) {
		echo $list;
	}
	else {
		$next = '#';
	}
}

$end = '&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;footer&quot;&gt;&lt;p class=&quot;info&quot;&gt;
Copyright © 2009-2010 &lt;a href=&quot;http://www.evlos.org/&quot;&gt;
Evlos&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;link&quot;&gt;已储存 [[replace_count]]
条 - &lt;a href=&quot;?page=1&quot;&gt;[ 第一页 ]&lt;/a&gt; &lt;a href=&quot;?page=
[replace_pages]&quot;&gt;[ 最后一页 ]&lt;/a&gt; - &lt;a href=&quot;[replace_last]
&quot;&gt;[ 上一页 ]&lt;/a&gt; &lt;a href=&quot;javascript:void(location.replace
(location))&quot;&gt;[ 刷新 ]&lt;/a&gt; &lt;a href=&quot;[replace_next]&quot;&gt;
[ 下一页 ]&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;';
$pages = (Int)(count_read()/$file_pagelist) + 1;
$end = str_replace('[replace_count]',count_read(),$end);
$end = str_replace('[replace_last]',$last,$end);
$end = str_replace('[replace_pages]',$pages,$end);
$end = str_replace('[replace_next]',$next,$end);
echo $end;

?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.rainmoe.com/2009/12/27/php-and-mysql/feed/</wfw:commentRss>
		<slash:comments>68</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached (Feed is rejected)
Page Caching using memcached
Database Caching 1/19 queries in 0.015 seconds using memcached
Object Caching 351/387 objects using memcached

Served from: www.rainmoe.com @ 2012-02-09 16:54:11 -->
