<?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>ls /proc &#187; mysql</title>
	<atom:link href="http://www.lsproc.com/blog/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lsproc.com/blog</link>
	<description>lsproc.com</description>
	<lastBuildDate>Fri, 21 May 2010 14:29:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>lamp 相关配置 [Debian]</title>
		<link>http://www.lsproc.com/blog/configure_lamp/</link>
		<comments>http://www.lsproc.com/blog/configure_lamp/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 08:35:41 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Linux&Webserver]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.lostk.com/blog/configure_lamp/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/configure_lamp/
编译环境
Debian (Ubuntu)

apt-get install build-essential
apt-get install libncurses5-dev
sudo apt-get install libxml2-dev libcurl3-dev libpng-dev libmhash-dev libmcrypt-dev libxslt-dev libpspell-dev

Mysql编译安装参数
CHOST=&#34;i686-pc-linux-gnu&#34; CFLAGS=&#34;-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#34; CXXFLAGS=&#34;-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#34; ./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --with-comment=Source --with-server-suffix=-Community-Server --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all --with-pthread --enable-static --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --without-ndb-debug --without-isam --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
配置成功会提示：
MySQL has [...]]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/configure_lamp/">http://www.lsproc.com/blog/configure_lamp/</a></p>
<p>编译环境</p>
<p>Debian (Ubuntu)</p>
<pre class="brush: bash">
apt-get install build-essential
apt-get install libncurses5-dev
sudo apt-get install libxml2-dev libcurl3-dev libpng-dev libmhash-dev libmcrypt-dev libxslt-dev libpspell-dev
</pre>
<p><strong>Mysql编译安装参数</strong></p>
<pre class="brush: bash">CHOST=&quot;i686-pc-linux-gnu&quot; CFLAGS=&quot;-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&quot; CXXFLAGS=&quot;-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&quot; ./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --with-comment=Source --with-server-suffix=-Community-Server --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all --with-pthread --enable-static --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --without-ndb-debug --without-isam --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock</pre>
<p>配置成功会提示：</p>
<p>MySQL has a Web site athttp://www.mysql.com/which carries details on the<br />
latest release, upcoming features, and other information to make your<br />
work or play with MySQL more productive. There you can also find<br />
information about mailing lists for MySQL discussion.</p>
<p>Remember to check the platform. specific part of the reference manual for<br />
hints about installing MySQL on your platform. Also have a look at the<br />
files in the Docs directory.</p>
<p>Thank you for choosing MySQL!</p>
<pre class="brush: bash">
make
make install

groupadd mysql                     //增加mysql组
useradd -g mysql mysql         //增加mysql用户，这个用户属于mysql组
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
chown -R root:mysql . //设置权限，注意后面有一个 &quot;.&quot;
chown -R mysql /var/lib/mysql //设置 mysql 目录权限
chgrp -R mysql . //注意后面有一个 &quot;.&quot;
cp share/mysql/my-medium.cnf /etc/my.cnf
cp share/mysql/mysql.server /etc/init.d/mysqld //开机自动启动 mysql。
chmod 755 /etc/init.d/mysqld
rcconf    //开启启动服务设置
/etc/init.d/mysqld start //启动 MySQL
bin/mysqladmin -u root password &quot;password_for_root&quot;
</pre>
<p><strong>查看mysql编译参数</strong><br />
cat /usr/local/mysql/bin/mysqlbug |grep ./configure</p>
<p>把 mysql 加入环境变量<br />
export PATH="$PATH:/usr/local/mysql/bin"</p>
<p>apache 编译</p>
<pre class="brush: bash">
./configure   //配置源代码树
--prefix=/usr/local/apache2  //体系无关文件的顶级安装目录PREFIX ，也就Apache的安装目录。
--enable-module=so   //打开 so 模块，so 模块是用来提 DSO 支持的 apache 核心模块
--enable-deflate=shared   //支持网页压缩
--enable-expires=shared   //支持 HTTP 控制
--enable-rewrite=shared   //支持 URL 重写
--enable-cache  //支持缓存
--enable-file-cache  //支持文件缓存
--enable-mem-cache  //支持记忆缓存
--enable-disk-cache //支持磁盘缓存
--enable-static-support   //支持静态连接(默认为动态连接)
--enable-static-htpasswd   //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件
--enable-static-htdigest  //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
--enable-static-rotatelogs  //使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序
--enable-static-logresolve   //使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名
--enable-static-htdbm   //使用静态连接编译 htdbm - 操作 DBM 密码数据库
--enable-static-ab  //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具
--enable-static-checkgid   //使用静态连接编译 checkgid
--disable-cgid  //禁止用一个外部 CGI 守护进程执行CGI脚本
--disable-cgi   //禁止编译 CGI 版本的 PHP
--disable-userdir  //禁止用户从自己的主目录中提供页面
--with-mpm=worker // 让apache以worker方式运行
--enable-authn-dbm=shared // 对动态数据库进行操作。Rewrite时需要。

make
make install
</pre>
<p>建立一个符号连接：</p>
<pre class="brush: bash">
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/httpd
rcconf    //加入自动启动
</pre>
<p>php 编译</p>
<pre class="brush: bash">
CHOST=&quot;i686-pc-linux-gnu&quot; CFLAGS=&quot;-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&quot; CXXFLAGS=&quot;-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&quot; ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-gd --enable-calendar --with-zlib --with-curl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs --with-openssl --enable-zend-multibyte --with-gettext --with-mcrypt --enable-exif --with-png-dir=/usr/local/lib --enable-ftp --with-mhash --with-libxml-dir=/usr/local/lib --with-xsl --with-pspell
</pre>
<p>配置完成提示<br />
+--------------------------------------------------------------------+<br />
| License:                                                           |<br />
| This software is subject to the PHP License, available in this     |<br />
| distribution in the file LICENSE.  By continuing this installation |<br />
| process, you are bound by the terms of this license agreement.     |<br />
| If you do not agree with the terms of this license, you must abort |<br />
| the installation process at this point.                            |<br />
+--------------------------------------------------------------------+</p>
<p>Thank you for using PHP.</p>
<pre class="brush: bash">
make
make install
</pre>
<p>修改/usr/local/apache2/conf/httpd.conf，在AddType部分加入如下内容<br />
AddType application/x-httpd-php .php
<p>-- EOF --</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2006-08-22 -- <a href="http://www.lsproc.com/blog/trouble-with-rebuild-system/" title="重装系统是件麻烦的事">重装系统是件麻烦的事</a> (0)</li><li>2008-03-01 -- <a href="http://www.lsproc.com/blog/close_timewait_connection/" title="如何关闭time_wait连接">如何关闭time_wait连接</a> (4)</li><li>2007-09-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_4/" title="PHP 和 Mysql 学习笔记（四）">PHP 和 Mysql 学习笔记（四）</a> (0)</li><li>2007-06-22 -- <a href="http://www.lsproc.com/blog/php_mysql_study_2/" title="PHP 和 Mysql 学习笔记（二）">PHP 和 Mysql 学习笔记（二）</a> (0)</li><li>2010-05-21 -- <a href="http://www.lsproc.com/blog/nginx_php_pathinfo_securit/" title="Nginx/PHP 文件类型错误解析漏洞：fix_pathinfo">Nginx/PHP 文件类型错误解析漏洞：fix_pathinfo</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/configure_lamp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQL导出导入命令的用例</title>
		<link>http://www.lsproc.com/blog/mysql_export_and_import/</link>
		<comments>http://www.lsproc.com/blog/mysql_export_and_import/#comments</comments>
		<pubDate>Sun, 04 Nov 2007 17:24:12 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Program&Database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[备份]]></category>

		<guid isPermaLink="false">http://localhost/lost/blog/webdesign/mysql_export_and_import/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/mysql_export_and_import/
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u dbuser -p dbname > dbname.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u dbuser -p dbname users> dbname_users.sql
3.导出一个数据库结构
mysqldump -u dbuser -p -d --add-drop-table dbname >d:\dbname_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
进入mysql数据库控制台，如
mysql -u root -p
mysql>use 数据库
然后使用source命令，后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\dbname.sql
-- EOF --
Related Posts2008-03-18 -- lamp 相关配置 [Debian] (2)2007-09-07 -- PHP 和 [...]]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/mysql_export_and_import/">http://www.lsproc.com/blog/mysql_export_and_import/</a></p>
<p>1.导出整个数据库<br />
mysqldump -u 用户名 -p 数据库名 > 导出的文件名<br />
<code>mysqldump -u dbuser -p dbname > dbname.sql</code></p>
<p>2.导出一个表<br />
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名<br />
<code>mysqldump -u dbuser -p dbname users> dbname_users.sql</code></p>
<p>3.导出一个数据库结构<br />
<code>mysqldump -u dbuser -p -d --add-drop-table dbname >d:\dbname_db.sql</code><br />
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table</p>
<p>4.导入数据库<br />
常用source 命令<br />
进入mysql数据库控制台，如<br />
<code>mysql -u root -p<br />
mysql>use 数据库</code><br />
然后使用source命令，后面参数为脚本文件(如这里用到的.sql)<br />
<code>mysql>source d:\dbname.sql</code>
<p>-- EOF --</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2007-09-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_4/" title="PHP 和 Mysql 学习笔记（四）">PHP 和 Mysql 学习笔记（四）</a> (0)</li><li>2007-07-27 -- <a href="http://www.lsproc.com/blog/php_mysql_study_3/" title="PHP 和 Mysql 学习笔记（三）">PHP 和 Mysql 学习笔记（三）</a> (0)</li><li>2007-06-22 -- <a href="http://www.lsproc.com/blog/php_mysql_study_2/" title="PHP 和 Mysql 学习笔记（二）">PHP 和 Mysql 学习笔记（二）</a> (0)</li><li>2006-12-27 -- <a href="http://www.lsproc.com/blog/mysql_encode_error_in_wordpress/" title="再谈Wordpress的MySQL乱码问题解决方法">再谈Wordpress的MySQL乱码问题解决方法</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/mysql_export_and_import/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 和 Mysql 学习笔记（四）</title>
		<link>http://www.lsproc.com/blog/php_mysql_study_4/</link>
		<comments>http://www.lsproc.com/blog/php_mysql_study_4/#comments</comments>
		<pubDate>Thu, 06 Sep 2007 16:47:00 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Program&Database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://localhost/lost/blog/webdesign/php_mysql_study_4/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/php_mysql_study_4/
1. 如何禁用 select 下拉列表中的某一项

&#60;select&#62;
&#60;option  selected&#62;——请选择——&#60;/option&#62;
&#60;optgroup  label=&#34;分类一&#34;&#62;
&#60;option&#62;——子类一&#60;/option&#62;
&#60;option&#62;——子类二&#60;/option&#62;
&#60;/optgroup&#62;
&#60;optgroup  label=&#34;分类二&#34;&#62;
&#60;option&#62;——子类一&#60;/option&#62;
&#60;option&#62;——子类二&#60;/option&#62;
&#60;/optgroup&#62;
&#60;/select&#62;

2. EMS SQL Manager中文显示乱码
打开EMS SQL Manager点击那个数据库出现了许多属性
选择database registration info中有一个client charset
选择gb2312简体中文
3. Mysql 乱码
MySQL数据库字符集为utf8
并且网页通过UTF-8编码发送
这时存入数据库的仍然是乱码
需要做以下设置：
@mysql_connect($dbhost,$dbuser,$dbpassword);
加上下面这行
$this->query("SET NAMES 'utf8'");
在每次发送sql查询前设定字符集为utf-8
4. 正则表达式
Email匹配
if(!preg_match(&#34;/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/&#34;,$email))
{
echo &#34;邮件格式不正确&#34;;
}
5. PHP5中时间相差八小时的解决办法
&#60;?php
date_default_timezone_set(&#039;Asia/Shanghai&#039;);
echo date(&#039;Y-m-d H:i:s&#039;);
?&#62;
6. PHP防止SQL注入攻击的简单方法
    1.修改PHP的配置文件 php.ini ,将display_errors的值设为Off，这样保证PHP脚本在出错之后不会在页面中显示错误信息。
    2.在Mysql函数前加错误抑制符 @ ，避免输出mysql错误。
    3.对所有用户输入的数据进行转义并进行类型检查。
7. 返回GD函数版本号

function gd_version() {
if (function_exists(&#039;gd_info&#039;)) {
$GDArray = gd_info();
$gd_version_number = $GDArray[&#039;GD [...]]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/php_mysql_study_4/">http://www.lsproc.com/blog/php_mysql_study_4/</a></p>
<p><strong>1. 如何禁用 select 下拉列表中的某一项</strong></p>
<pre class="brush: html">
&lt;select&gt;
&lt;option  selected&gt;——请选择——&lt;/option&gt;
&lt;optgroup  label=&quot;分类一&quot;&gt;
&lt;option&gt;——子类一&lt;/option&gt;
&lt;option&gt;——子类二&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup  label=&quot;分类二&quot;&gt;
&lt;option&gt;——子类一&lt;/option&gt;
&lt;option&gt;——子类二&lt;/option&gt;
&lt;/optgroup&gt;
&lt;/select&gt;
</pre>
<p><strong>2. EMS SQL Manager中文显示乱码</strong><br />
打开EMS SQL Manager点击那个数据库出现了许多属性<br />
选择database registration info中有一个client charset<br />
选择gb2312简体中文</p>
<p><strong>3. Mysql 乱码</strong><br />
MySQL数据库字符集为utf8<br />
并且网页通过UTF-8编码发送<br />
这时存入数据库的仍然是乱码<br />
需要做以下设置：<br />
<code>@mysql_connect($dbhost,$dbuser,$dbpassword);</code><br />
加上下面这行<br />
<code>$this->query("SET NAMES 'utf8'");</code><br />
在每次发送sql查询前设定字符集为utf-8</p>
<p>4. 正则表达式</p>
<pre class="brush: php">Email匹配
if(!preg_match(&quot;/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/&quot;,$email))
{
echo &quot;邮件格式不正确&quot;;
}</pre>
<p>5. PHP5中时间相差八小时的解决办法</p>
<pre class="brush: php">&lt;?php
date_default_timezone_set(&#039;Asia/Shanghai&#039;);
echo date(&#039;Y-m-d H:i:s&#039;);
?&gt;</pre>
<p>6. PHP防止SQL注入攻击的简单方法</p>
<p>    1.修改PHP的配置文件 php.ini ,将display_errors的值设为Off，这样保证PHP脚本在出错之后不会在页面中显示错误信息。<br />
    2.在Mysql函数前加错误抑制符 @ ，避免输出mysql错误。<br />
    3.对所有用户输入的数据进行转义并进行类型检查。</p>
<p>7. 返回GD函数版本号</p>
<pre class="brush: php">
function gd_version() {
if (function_exists(&#039;gd_info&#039;)) {
$GDArray = gd_info();
$gd_version_number = $GDArray[&#039;GD Version&#039;] ? $GDArray[&#039;GD Version&#039;] : 0;
unset($GDArray);
} else {
$gd_version_number = 0;
}
return $gd_version_number;
}
</pre>
<p>8. 获得用户的真实IP地址</p>
<pre class="brush: php">
function realip()
{
    static $realip = NULL;

    if ($realip !== NULL)
    {
        return $realip;
    }

    if (isset($_SERVER))
    {
        if (isset($_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;]))
        {
            $arr = explode(&#039;,&#039;, $_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;]);

            /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
            foreach ($arr AS $ip)
            {
                $ip = trim($ip);

                if ($ip != &#039;unknown&#039;)
                {
                    $realip = $ip;

                    break;
                }
            }
        }
        elseif (isset($_SERVER[&#039;HTTP_CLIENT_IP&#039;]))
        {
            $realip = $_SERVER[&#039;HTTP_CLIENT_IP&#039;];
        }
        else
        {
            if (isset($_SERVER[&#039;REMOTE_ADDR&#039;]))
            {
                $realip = $_SERVER[&#039;REMOTE_ADDR&#039;];
            }
            else
            {
                $realip = &#039;0.0.0.0&#039;;
            }
        }
    }
    else
    {
        if (getenv(&#039;HTTP_X_FORWARDED_FOR&#039;))
        {
            $realip = getenv(&#039;HTTP_X_FORWARDED_FOR&#039;);
        }
        elseif (getenv(&#039;HTTP_CLIENT_IP&#039;))
        {
            $realip = getenv(&#039;HTTP_CLIENT_IP&#039;);
        }
        else
        {
            $realip = getenv(&#039;REMOTE_ADDR&#039;);
        }
    }

    preg_match(&quot;/[\d\.]{7,15}/&quot;, $realip, $onlineip);
    $realip = !empty($onlineip[0]) ? $onlineip[0] : &#039;0.0.0.0&#039;;

    return $realip;
}
</pre>
<p>9. 连接多个ID，以便创建像这样的查询: "IN('a','b')";</p>
<pre class="brush: php">
function implode_ids($array){
$ids = $comma = &#039;&#039;;
if (is_array($array) &amp;&amp; count($array)){
foreach($array as $id) {
$ids .= &quot;$comma&#039;&quot;.intval($id).&quot;&#039;&quot;;
$comma = &#039;, &#039;;
}
}
return $ids;
}
</pre>
<p>-- EOF --</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2007-06-22 -- <a href="http://www.lsproc.com/blog/php_mysql_study_2/" title="PHP 和 Mysql 学习笔记（二）">PHP 和 Mysql 学习笔记（二）</a> (0)</li><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2007-11-13 -- <a href="http://www.lsproc.com/blog/cakephp_note/" title="Cakephp 笔记">Cakephp 笔记</a> (0)</li><li>2007-07-27 -- <a href="http://www.lsproc.com/blog/php_mysql_study_3/" title="PHP 和 Mysql 学习笔记（三）">PHP 和 Mysql 学习笔记（三）</a> (0)</li><li>2007-06-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_1/" title="PHP 和 Mysql 学习笔记（一）">PHP 和 Mysql 学习笔记（一）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/php_mysql_study_4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 和 Mysql 学习笔记（三）</title>
		<link>http://www.lsproc.com/blog/php_mysql_study_3/</link>
		<comments>http://www.lsproc.com/blog/php_mysql_study_3/#comments</comments>
		<pubDate>Fri, 27 Jul 2007 08:35:48 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Program&Database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://www.lostk.com/blog/webdesign/php_mysql_study_3/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/php_mysql_study_3/
1. mysql 定界符（反引号`）
当标示符是一个受限的词或包含特殊的字符时使用
select * from `select` where `select`.id &#62;100;
create table orders(`my orders` varchar(100)...);
2. 数据库的大小写
linux下的数据库和表名的大小写是敏感的
其他的数据库对象不区分大小写
3. mysql 分组语句和嵌套子查询
员工表 emp( empno, name, tel, deptno, sal )
部门表 dept( deptno, dname, addr )
显示每个部门收入最高的职工信息
select * from emp
where sal in (
	select max(sal)
	from emp
	group by deptno
);
4. mysql 查询排序 ( SQL Order By )
SELECT "栏位名"
FROM "表格名"
[WHERE "条件"]
ORDER BY "栏位名" [ASC, DESC]
ASC 代表结果会以由小往大的顺序列出，而 [...]]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/php_mysql_study_3/">http://www.lsproc.com/blog/php_mysql_study_3/</a></p>
<p><strong>1. mysql 定界符（反引号`）</strong></p>
<p>当标示符是一个受限的词或包含特殊的字符时使用</p>
<pre class="brush: sql">select * from `select` where `select`.id &gt;100;
create table orders(`my orders` varchar(100)...);</pre>
<p><strong>2. 数据库的大小写</strong></p>
<p>linux下的数据库和表名的大小写是敏感的<br />
其他的数据库对象不区分大小写</p>
<p><strong>3. mysql 分组语句和嵌套子查询</strong></p>
<p>员工表 emp( empno, name, tel, deptno, sal )<br />
部门表 dept( deptno, dname, addr )</p>
<p>显示每个部门收入最高的职工信息</p>
<pre class="brush: sql">select * from emp
where sal in (
	select max(sal)
	from emp
	group by deptno
);</pre>
<p><strong>4. mysql 查询排序 ( SQL Order By )</strong></p>
<p>SELECT "栏位名"<br />
FROM "表格名"<br />
[WHERE "条件"]<br />
ORDER BY "栏位名" [ASC, DESC]</code><br />
ASC 代表结果会以由小往大的顺序列出，而 DESC 代表结果会以由大往小的顺序列出，默认值为 ASC。</p>
<p>我们可以照好几个不同的栏位来排顺序。在这个情况下， ORDER BY 子句的语法如下(假设有两个栏位)：<br />
ORDER BY "栏位一" [ASC, DESC], "栏位二" [ASC, DESC]<br />
若我们对这两个栏位都选择由小往大的话，那这个子句就会造成结果是依据 "栏位一" 由小往大排。若有好几笔资料 "栏位一" 的值相等，那这几笔资料就依据 "栏位二" 由小往大排。 </p>
<p><strong>5. mysql limit 子句</strong></p>
<p>数据表同3，查询薪水最低的5名员工。<br />
<code>select * from emp order by sal limit 0, 5;</code><br />
返回值从第一行开始（第一行偏移量为0）可简写为：<br />
<code>select * from emp order by sal limit 5;</code><br />
查询3-7号员工信息：<br />
<code>select * from emp limit 2, 5;</code><br />
这里的 limit 子句是 mysql 特有的，是大多数其他的关系型数据库所没有的。</p>
<p><strong>6. mysql 数据表关联</strong></p>
<p>双表关联<br />
数据表同3，查询某个部门的职工号，姓名：</p>
<pre class="brush: sql">select emp.empno, emp.name dept.dname
from emp, dept
where dept.name = &#039;软件部&#039;
and emp.deptno = dept.deptno;</pre>
<p>多表关联<br />
举例在线书店数据库<br />
客户表 customers (customerid, name, address, city)<br />
定单表 orders (orderid, customerid, amount, date)<br />
书籍表 books (isbn, author, title, price)<br />
订单与图书关联的表 book_items (orderid, isbn, quantity)<br />
查询至少定购了一本关于 java 的书籍的顾客：</p>
<pre class="brush: sql">select customers.name
from customers, orders, order_items, books
where customers.customerid = order.customerid
and orders.orderid = order_items.orderid
and order_items.isbn = books.isbn
and books.title like &#039;%java%&#039;;</pre>
<p>在这里同样可以使用表的别名（alias）,以上可改写为：</p>
<pre class="brush: sql">select c.name
from customers as c, orders as o, order_items as oi, books as b
where c.customerid = o.customerid
and o.orderid = oi.orderid
and oi.isbn = b.isbn
and b.title like &#039;%java%&#039;;</pre>
<p>查找不匹配行，这里查找没有订购任何商品的顾客：</p>
<pre class="brush: sql">select customers.customerid, customers.name
from customers left join orders
using (customerid)
where orders.orderid is null</pre>
<p>这里使用了一个左关联将 customers 表和 orders 表关联起来，如果右边的表中没有匹配行就在结果中加一行，该行右边的列为 null，在这里关联条件所使用的语法一种是上面的 using，它并不需要指定连接属性所来自的表，所以要使用 using 子句，两个表中的列必须有同样的名称，另外还有一个关联条件的语法是 on，它需要指定连接属性所来自的表：<br />
<code>....<br />
on customers.customerid = orders.customerid<br />
....</code></p>
<blockquote><p>
A left join（左连接）包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。<br />
同理，也存在着相同道理的 right join（右连接），即包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。<br />
而full join(全连接)顾名思义，左右表中所有记录都会选出来。 </p></blockquote>
<p>-- EOF --</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2007-06-22 -- <a href="http://www.lsproc.com/blog/php_mysql_study_2/" title="PHP 和 Mysql 学习笔记（二）">PHP 和 Mysql 学习笔记（二）</a> (0)</li><li>2007-09-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_4/" title="PHP 和 Mysql 学习笔记（四）">PHP 和 Mysql 学习笔记（四）</a> (0)</li><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2007-11-13 -- <a href="http://www.lsproc.com/blog/cakephp_note/" title="Cakephp 笔记">Cakephp 笔记</a> (0)</li><li>2007-11-05 -- <a href="http://www.lsproc.com/blog/mysql_export_and_import/" title="MySQL导出导入命令的用例">MySQL导出导入命令的用例</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/php_mysql_study_3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 和 Mysql 学习笔记（二）</title>
		<link>http://www.lsproc.com/blog/php_mysql_study_2/</link>
		<comments>http://www.lsproc.com/blog/php_mysql_study_2/#comments</comments>
		<pubDate>Fri, 22 Jun 2007 07:15:42 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Program&Database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://www.lostk.com/blog/webdesign/php_study_2/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/php_mysql_study_2/
1. 值参和变参
值参：
&#60;?php
	function swap($a, $b) {
		$temp = $a;
		$a = $b;
		$b = $temp;
	}
	$x = 100;
	$y = 1;
	swap($x, $y);
	echo &#34;x = $x&#60;br /&#62;y = $y&#34;;
?&#62;
输出结果为：
x = 100
y = 1
这里 $x, $y 只是一个值的拷贝
变参：
&#60;?php
	function swap(&#38;$a, &#38;$b) {
		$temp = $a;
		$a = $b;
		$b = $temp;
	}
	$x = 100;
	$y = 1;
	swap($x, $y);
	echo &#34;x = $x&#60;br /&#62;y = $y&#34;;
?&#62;
输出结果为：
x = 1
y = 100
2. [...]]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/php_mysql_study_2/">http://www.lsproc.com/blog/php_mysql_study_2/</a></p>
<p>1. 值参和变参<br />
值参：</p>
<pre class="brush: php">&lt;?php
	function swap($a, $b) {
		$temp = $a;
		$a = $b;
		$b = $temp;
	}
	$x = 100;
	$y = 1;
	swap($x, $y);
	echo &quot;x = $x&lt;br /&gt;y = $y&quot;;
?&gt;</pre>
<p>输出结果为：</p>
<pre class="brush: php">x = 100
y = 1</pre>
<p>这里 $x, $y 只是一个值的拷贝</p>
<p>变参：</p>
<pre class="brush: php">&lt;?php
	function swap(&amp;$a, &amp;$b) {
		$temp = $a;
		$a = $b;
		$b = $temp;
	}
	$x = 100;
	$y = 1;
	swap($x, $y);
	echo &quot;x = $x&lt;br /&gt;y = $y&quot;;
?&gt;</pre>
<p>输出结果为：</p>
<pre class="brush: php">x = 1
y = 100</pre>
<p>2. 连接 mysql<br />
格式： mysql -h主机地址 -u用户名 -p用户密码</p>
<pre class="brush: bash">mysql -uroot -p
mysql -h100.100.100.100 -uroot -p</pre>
<p>-h -u和后面都没有空格<br />
选定数据库mysql<br />
<code>use mysql;</code></p>
<p>3. mysql 指令<br />
显示数据库列表<br />
<code>show databases;</code><br />
显示数据库中的表<br />
<code>show tables;</code><br />
显示数据表的结构<br />
describe 表名<br />
简写为<br />
<code>desc 表名</code></p>
<p>4. SQL(Structured Query Language，结构查询语言)</p>
<p>SQL功能强大，但是概括起来，它可以分成以下几组：</p>
<p><strong>DML（Data Manipulation Language，数据操作语言）</strong>：用于检索或者修改数据；</p>
<blockquote><p>SELECT：用于检索数据；<br />
INSERT：用于增加数据到数据库；<br />
UPDATE：用于从数据库中修改现存的数据<br />
DELETE：用于从数据库中删除数据。</p></blockquote>
<p><strong>DDL（Data Definition Language，数据定义语言）</strong>： 用于定义数据的结构，比如 创建、修改或者删除数据库对象；</p>
<blockquote><p>CREATE TABLE<br />
ALTER TABLE<br />
DROP TABLE<br />
CREATE INDEX<br />
DROP INDEX</p></blockquote>
<p><strong>DCL（Data Control Language，数据控制语言）</strong>：用于定义数据库用户的权限。DCL命令用于创建关系用户访问以及授权的对象。下面是几个DCL命令：</p>
<blockquote><p>ALTER PASSWORD<br />
GRANT<br />
REVOKE<br />
CREATE SYNONYM</p></blockquote>
<p>举例：</p>
<pre class="brush: sql">create database school;	--建立数据库
drop database school;	/* 删除数据库 */
drop database if exists school;	#如果存在数据库school则删除</pre>
<p>这里3种注释方式 "--"，"#"和"/* ... */"</p>
<p>统计记录数：<br />
<code>select count(*) from table;</code>
<p>-- EOF --</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2007-09-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_4/" title="PHP 和 Mysql 学习笔记（四）">PHP 和 Mysql 学习笔记（四）</a> (0)</li><li>2007-07-27 -- <a href="http://www.lsproc.com/blog/php_mysql_study_3/" title="PHP 和 Mysql 学习笔记（三）">PHP 和 Mysql 学习笔记（三）</a> (0)</li><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2007-11-13 -- <a href="http://www.lsproc.com/blog/cakephp_note/" title="Cakephp 笔记">Cakephp 笔记</a> (0)</li><li>2007-06-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_1/" title="PHP 和 Mysql 学习笔记（一）">PHP 和 Mysql 学习笔记（一）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/php_mysql_study_2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再谈Wordpress的MySQL乱码问题解决方法</title>
		<link>http://www.lsproc.com/blog/mysql_encode_error_in_wordpress/</link>
		<comments>http://www.lsproc.com/blog/mysql_encode_error_in_wordpress/#comments</comments>
		<pubDate>Wed, 27 Dec 2006 02:49:16 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Program&Database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[乱码]]></category>

		<guid isPermaLink="false">http://www.lostk.com/blog/webdesign/mysql_encode_error_in_wordpress/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/mysql_encode_error_in_wordpress/
在MySQL4.1下，中文的WP就会产生种种的乱码问题。
一个程序（ PHP，CGI 等）与MySQL建立连接后，这个程序发送给MySQL的数据采用的是什么字符集，MySQL 是无从得知的。所以解决乱码问题的根本就是我们在程序中告诉MySQL采用的编码是什么，简单的就是在程序中加入这样的一个语句：
SET NAMES 'utf8';
这个语句的效果等同于同时设定了
SET character_set_client='utf8';
SET character_set_connection='utf8';
SET character_set_results='utf8';
为什么这么做？
我们安装MySQL4.1时按照默认配置，那么default-character-set= utf8。在MySQL Command Line Client下查看到的查看系统的字符集和排序方式的设定为：

    mysql> SHOW VARIABLES LIKE ‘character_set_%’;
    +————————–+—————————-+
    &#124; Variable_name            &#124;            [...]]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/mysql_encode_error_in_wordpress/">http://www.lsproc.com/blog/mysql_encode_error_in_wordpress/</a></p>
<p>在MySQL4.1下，中文的WP就会产生种种的乱码问题。</p>
<p>一个程序（ PHP，CGI 等）与MySQL建立连接后，这个程序发送给MySQL的数据采用的是什么字符集，MySQL 是无从得知的。所以解决乱码问题的根本就是我们在程序中告诉MySQL采用的编码是什么，简单的就是在程序中加入这样的一个语句：</p>
<p><code>SET NAMES 'utf8';</code></p>
<p>这个语句的效果等同于同时设定了</p>
<p><code>SET character_set_client='utf8';<br />
SET character_set_connection='utf8';<br />
SET character_set_results='utf8';</code></p>
<p><strong>为什么这么做？</strong></p>
<p>我们安装MySQL4.1时按照默认配置，那么default-character-set= utf8。在MySQL Command Line Client下查看到的查看系统的字符集和排序方式的设定为：</p>
<p><span id="more-45"></span></p>
<blockquote><p>    mysql> SHOW VARIABLES LIKE ‘character_set_%’;<br />
    +————————–+—————————-+<br />
    | Variable_name            |            Value           |<br />
    +————————–+—————————-+<br />
    | character_set_client     | latin1                     |<br />
    | character_set_connection | latin1                     |<br />
    | character_set_database   | utf8                       |<br />
    | character_set_results    | latin1                     |<br />
    | character_set_server     | utf8                       |<br />
    | character_set_system     | utf8                       |<br />
    | character_sets_dir       | /usr/share/mysql/charsets/ |<br />
    +————————–+—————————-+<br />
    7 rows in set (0.00 sec)</p>
<p>    mysql> SHOW VARIABLES LIKE ‘collation_%’;<br />
    +———————-+——————-+<br />
    | Variable_name        |      Value        |<br />
    +———————-+——————-+<br />
    | collation_connection | latin1_swedish_ci |<br />
    | collation_database   | utf8_general_ci   |<br />
    | collation_server     | utf8_general_ci   |<br />
    +———————-+——————-+<br />
    3 rows in set (0.00 sec)</p></blockquote>
<p>按照MySQL的存储机制，数据在传输的过程中就会在latin1和utf8两种编码之间互相转换，这样就很容易的变成了乱码。我们在程序中设置了 SET NAMES ‘UTF8′，就等同于把所有的编码都设置为utf8，这样数据就没有了编码转换问题，也就没有了乱码问题了。</p>
<p><strong>在WP中的设置方法</strong></p>
<p>那么具体在WordPress中，怎么设定SET NAMES 'UTF8'呢？</p>
<p>对于PHP的MySQL系统来说，这样的修改很简单：</p>
<p>    找到wp-includes/wp-db.php</p>
<p><code>    $this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);<br />
</code></p>
<p>    //加上下面这行</p>
<p><code>    $this->query("SET NAMES 'utf8'");<br />
</code></p>
<p>这样数据在传输和存储的过程中，都不会出现乱码了。</p>
<p>然后把所有表和字段的字符集改成utf8，运行以下语句：</p>
<p><coolcode linenum="off" lang="mysql"><br />
--<br />
-- TABLE<br />
-- </p>
<p>ALTER TABLE `wp_categories`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_comments`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_links`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_options`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_post2cat`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_postmeta`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_usermeta`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_users`  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;</p>
<p>--<br />
-- TABLE wp_categories<br />
-- </p>
<p>ALTER TABLE `wp_categories` CHANGE `cat_name` `cat_name` varchar( 55 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_categories` CHANGE `category_nicename` `category_nicename` varchar( 200 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_categories` CHANGE `category_description` `category_description` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci;</p>
<p>--<br />
-- TABLE wp_comments<br />
-- </p>
<p>ALTER TABLE `wp_comments` CHANGE `comment_author` `comment_author` tinytext CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_comments` CHANGE `comment_author_email` `comment_author_email` varchar( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_comments` CHANGE `comment_author_url` `comment_author_url`  varchar( 200 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_comments` CHANGE `comment_author_IP` `comment_author_IP`  varchar( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_comments` CHANGE `comment_content` `comment_content` text CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_comments` CHANGE `comment_approved` `comment_approved` ENUM( '0', '1', 'spam' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_comments` CHANGE `comment_agent` `comment_agent` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_comments` CHANGE `comment_type` `comment_type` varchar( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci;</p>
<p>--<br />
-- TABLE wp_linkcategories<br />
-- </p>
<p>ALTER TABLE `wp_linkcategories` CHANGE `cat_name` `cat_name` tinytext CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `auto_toggle` `auto_toggle` enum( 'Y', 'N' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `show_images` `show_images` enum( 'Y', 'N' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `show_description` `show_description` enum( 'Y', 'N' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `show_rating` `show_rating` enum( 'Y', 'N' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `show_updated` `show_updated` enum( 'Y', 'N' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `sort_order` `sort_order` varchar( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `sort_desc` `sort_desc` enum( 'Y', 'N' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `text_before_link` `text_before_link` varchar( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `text_after_link` `text_after_link` varchar( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_linkcategories` CHANGE `text_after_all` `text_after_all` varchar( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci;</p>
<p>--<br />
-- TABLE wp_links<br />
-- </p>
<p>ALTER TABLE `wp_links` CHANGE `link_url` `link_url` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_links` CHANGE `link_name` `link_name` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_links` CHANGE `link_image` `link_image` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_links` CHANGE `link_target` `link_target` varchar( 25 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_links` CHANGE `link_description` `link_description` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_links` CHANGE `link_visible` `link_visible` enum( 'Y', 'N' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_links` CHANGE `link_rel` `link_rel` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_links` CHANGE `link_notes` `link_notes` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_links` CHANGE `link_rss` `link_rss` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;</p>
<p>--<br />
-- TABLE wp_options<br />
-- </p>
<p>ALTER TABLE `wp_options` CHANGE `option_name` `option_name` varchar( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_options` CHANGE `option_can_override` `option_can_override` enum( 'Y', 'N' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_options` CHANGE `option_value` `option_value` longtext CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_options` CHANGE `option_description` `option_description` tinytext CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_options` CHANGE `autoload` `autoload` enum( 'Y', 'N' ) CHARACTER SET utf8 COLLATE utf8_general_ci;</p>
<p>--<br />
-- TABLE wp_postmeta<br />
-- </p>
<p>ALTER TABLE `wp_postmeta` CHANGE `meta_key` `meta_key` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_postmeta` CHANGE `meta_value` `meta_value` longtext CHARACTER SET utf8 COLLATE utf8_general_ci;</p>
<p>--<br />
-- TABLE wp_posts<br />
-- </p>
<p>ALTER TABLE `wp_posts` CHANGE `post_content` `post_content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `post_title` `post_title` text CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `post_excerpt` `post_excerpt` text CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `post_status` `post_status` enum( 'publish', 'draft', 'private', 'static', 'object', 'attachment' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `comment_status` `comment_status` enum( 'open', 'closed', 'registered_only' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `ping_status` `ping_status` enum( 'open', 'closed' ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `post_password` `post_password` varchar( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `post_name` `post_name` varchar( 200 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `to_ping` `to_ping` text CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `pinged` `pinged` text CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `post_content_filtered` `post_content_filtered` text CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `guid` `guid` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `post_type` `post_type` varchar( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_posts` CHANGE `post_mime_type` `post_mime_type` varchar( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci;</p>
<p>--<br />
-- TABLE wp_usermeta<br />
-- </p>
<p>ALTER TABLE `wp_usermeta` CHANGE `meta_key` `meta_key` varchar( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_usermeta` CHANGE `meta_value` `meta_value` longtext CHARACTER SET utf8 COLLATE utf8_general_ci;</p>
<p>--<br />
-- TABLE wp_users<br />
-- </p>
<p>ALTER TABLE `wp_users` CHANGE `user_login` `user_login` varchar( 60 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_users` CHANGE `user_pass` `user_pass` varchar( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_users` CHANGE `user_nicename` `user_nicename` varchar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_users` CHANGE `user_email` `user_email` varchar( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_users` CHANGE `user_url` `user_url` varchar( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_users` CHANGE `user_activation_key` `user_activation_key` varchar( 60 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
ALTER TABLE `wp_users` CHANGE `display_name` `display_name` varchar( 250 ) CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
</coolcode></p>
<p>-- EOF --</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2006-07-03 -- <a href="http://www.lsproc.com/blog/mysql-encode-wordpress/" title="Mysql4.1编码详解及WordPress编码完善">Mysql4.1编码详解及WordPress编码完善</a> (1)</li><li>2006-02-26 -- <a href="http://www.lsproc.com/blog/all-restart/" title="一切又重新开始了">一切又重新开始了</a> (0)</li><li>2010-01-11 -- <a href="http://www.lsproc.com/blog/cacti_graph_with_chinese/" title="cacti 图片中文乱码问题">cacti 图片中文乱码问题</a> (2)</li><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2008-03-05 -- <a href="http://www.lsproc.com/blog/webalizer_graphs_bad_encode/" title="解决webalizer 汉化后图表中乱码的问题">解决webalizer 汉化后图表中乱码的问题</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/mysql_encode_error_in_wordpress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>重装系统是件麻烦的事</title>
		<link>http://www.lsproc.com/blog/trouble-with-rebuild-system/</link>
		<comments>http://www.lsproc.com/blog/trouble-with-rebuild-system/#comments</comments>
		<pubDate>Tue, 22 Aug 2006 01:19:40 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Memory&Notes]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[操作系统]]></category>
		<category><![CDATA[重装]]></category>

		<guid isPermaLink="false">http://www.lostk.com/blog/words/trouble-with-rebuild-system/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/trouble-with-rebuild-system/
昨天终于把单位用的机器重装了，为了玩玩 babel 开始装 php5.1.5 ， mysql5.0.24 ， 去下apache 发现 2.2.3 已经出来了，于是想尝鲜，没想到惹来一大堆麻烦#83


开启 Apache Mod_rewrite
apache 2.2.x + PHP5.1.x 不能运行的解决办法.
apache2.2装完后更改DocumentRoot出现403错误原因
关于PHP5.1下 php文件显示空白问题


弄完我都快能做个Q&#038;A了#76
-- EOF --
Related Posts2008-03-18 -- lamp 相关配置 [Debian] (2)2007-09-07 -- PHP 和 Mysql 学习笔记（四） (0)2007-06-22 -- PHP 和 Mysql 学习笔记（二） (0)2010-05-21 -- Nginx/PHP 文件类型错误解析漏洞：fix_pathinfo (2)2010-04-12 -- nginx userid 模块客户端 cookie 解码 (0)]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/trouble-with-rebuild-system/">http://www.lsproc.com/blog/trouble-with-rebuild-system/</a></p>
<p>昨天终于把单位用的机器重装了，为了玩玩 <a href="http://www.v2ex.com/go/babel">babel</a> 开始装 <a href="http://www.php.net/downloads.php#v5">php5.1.5</a> ， <a href="http://dev.mysql.com/downloads/mysql/5.0.html">mysql5.0.24</a> ， 去下<a href="http://apache.org/">apache</a> 发现 <a href="http://mirror.vmmatrix.net/apache/httpd/binaries/win32/">2.2.3</a> 已经出来了，于是想尝鲜，没想到惹来一大堆麻烦#83</p>
<blockquote>
<ul>
<li><a href="http://www.lostk.com/bbs/thread-529-1-1.html">开启 Apache Mod_rewrite</a></li>
<li><a href="http://www.lostk.com/bbs/thread-530-1-1.html">apache 2.2.x + PHP5.1.x 不能运行的解决办法.</a></li>
<li><a href="http://www.lostk.com/bbs/thread-533-1-1.html">apache2.2装完后更改DocumentRoot出现403错误原因</a></li>
<li><a href="http://www.lostk.com/bbs/thread-534-1-1.html">关于PHP5.1下 php文件显示空白问题</a></li>
</ul>
</blockquote>
<p>弄完我都快能做个Q&#038;A了#76</p>
<p>-- EOF --</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2007-09-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_4/" title="PHP 和 Mysql 学习笔记（四）">PHP 和 Mysql 学习笔记（四）</a> (0)</li><li>2007-06-22 -- <a href="http://www.lsproc.com/blog/php_mysql_study_2/" title="PHP 和 Mysql 学习笔记（二）">PHP 和 Mysql 学习笔记（二）</a> (0)</li><li>2010-05-21 -- <a href="http://www.lsproc.com/blog/nginx_php_pathinfo_securit/" title="Nginx/PHP 文件类型错误解析漏洞：fix_pathinfo">Nginx/PHP 文件类型错误解析漏洞：fix_pathinfo</a> (2)</li><li>2010-04-12 -- <a href="http://www.lsproc.com/blog/nginx_userid_decode/" title="nginx userid 模块客户端 cookie 解码">nginx userid 模块客户端 cookie 解码</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/trouble-with-rebuild-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql4.1编码详解及WordPress编码完善</title>
		<link>http://www.lsproc.com/blog/mysql-encode-wordpress/</link>
		<comments>http://www.lsproc.com/blog/mysql-encode-wordpress/#comments</comments>
		<pubDate>Mon, 03 Jul 2006 07:25:17 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Program&Database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[编码]]></category>

		<guid isPermaLink="false">http://www.lostk.com/blog/webdesign/mysql-encode-wordpress/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/mysql-encode-wordpress/
下面要写的是一篇非常无聊的东西，充斥了大量各式各样的编码、转换、客户端、服务器端、连接……呃，我自己都不愿意去看它，但想一想，写下来还是有点意义的，原因有四：
   1. MySQL 4.1 对多语言的支持有了很大变化 (这导致了问题的出现)；
   2. 尽管大部分的地方 (包括个人使用和主机提供商)，MySQL 3 仍然占主导地位；但 MySQL 4.1 是 MySQL 官方推荐的数据库，已经有主机提供商开始提供并将会越来越多；
   3. 许多 PHP 程序以 MySQL 作为默认的数据库管理软件，但它们一般不区分 MySQL 4.1 与 4.1 以下版本的区别，笼统地称“MySQL 3.xx.xx 以上版本”就满足安装需求了；
   4. 因为 latin1 在许多地方 (下边会详细描述具体是哪些地方) 作为默认的字符集，成功的蒙蔽了许多 PHP 程序的开发者和用户，掩盖了在中文等语言环境下会出现的问题；
简单的说，MySQL 自身的变化和使用 MySQL 的 PHP 程序对此忽略，导致了问题的出现和复杂化，而由于大部分用户使用的是英文，使这种问题不被重视。这里提到的 PHP 程序，主要就 WordPress [...]]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/mysql-encode-wordpress/">http://www.lsproc.com/blog/mysql-encode-wordpress/</a></p>
<p>下面要写的是一篇非常无聊的东西，充斥了大量各式各样的编码、转换、客户端、服务器端、连接……呃，我自己都不愿意去看它，但想一想，写下来还是有点意义的，原因有四：</p>
<p>   1. MySQL 4.1 对多语言的支持有了很大变化 (这导致了问题的出现)；<br />
   2. 尽管大部分的地方 (包括个人使用和主机提供商)，MySQL 3 仍然占主导地位；但 MySQL 4.1 是 MySQL 官方推荐的数据库，已经有主机提供商开始提供并将会越来越多；<br />
   3. 许多 PHP 程序以 MySQL 作为默认的数据库管理软件，但它们一般不区分 MySQL 4.1 与 4.1 以下版本的区别，笼统地称“MySQL 3.xx.xx 以上版本”就满足安装需求了；<br />
   4. 因为 latin1 在许多地方 (下边会详细描述具体是哪些地方) 作为默认的字符集，成功的蒙蔽了许多 PHP 程序的开发者和用户，掩盖了在中文等语言环境下会出现的问题；</p>
<p>简单的说，MySQL 自身的变化和使用 MySQL 的 PHP 程序对此忽略，导致了问题的出现和复杂化，而由于大部分用户使用的是英文，使这种问题不被重视。这里提到的 PHP 程序，主要就 WordPress 而言。<br />
MySQL 4.1 字符集支持的原理</p>
<p>MySQL 4.1 对于字符集的指定可以细化到一台机器上安装的 MySQL，其中的一个数据库，其中的一张表，其中的一栏，应该用什么字符集。但是，传统的 Web 程序在创建数据库和数据表时并没有使用那么复杂的配置，它们用的是默认的配置，那么，默认的配置从何而来呢？</p>
<p>   1. 编译 MySQL 时，指定了一个默认的字符集，这个字符集是 latin1；<br />
   2. 安装 MySQL 时，可以在配置文件 (my.ini) 中指定一个默认的的字符集，如果没指定，这个值继承自编译时指定的；<br />
   3. 启动 mysqld 时，可以在命令行参数中指定一个默认的的字符集，如果没指定，这个值继承自配置文件中的；<br />
   4. 此时 character_set_server 被设定为这个默认的字符集；<br />
   5. 当创建一个新的数据库时，除非明确指定，这个数据库的字符集被缺省设定为 character_set_server；<br />
   6. 当选定了一个数据库时，character_set_database 被设定为这个数据库默认的字符集；<br />
   7. 在这个数据库里创建一张表时，表默认的字符集被设定为 character_set_database，也就是这个数据库默认的字符集；<br />
   8. 当在表内设置一栏时，除非明确指定，否则此栏缺省的字符集就是表默认的字符集；<br />
   9. 这个字符集就是数据库中实际存储数据采用的字符集，mysqldump 出来的内容就是这个字符集下的；</p>
<p>简单的总结一下，如果什么地方都不修改，那么所有的数据库的所有表的所有栏位的都用 latin1 存储，不过我们如果安装 MySQL，一般都会选择多语言支持，也就是说，安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8，这保证了缺省情况下，所有的数据库的所有表的所有栏位的都用 UTF-8 存储。</p>
<p><span id="more-25"></span><br />
当一个 PHP 程序与 MySQL 建立连接后，这个程序发送给 MySQL 的数据采用的是什么字符集？MySQL 无从得知 (它最多只能猜测)，所以 MySQL 4.1 要求客户端必须指定这个字符集，也就是 character_set_client，MySQL 的怪异之处在于，得到的这个字符集并不立即转换为存储在数据库中的那个字符集，而是先转换为 character_set_connection 变量指定的一个字符集；这个 connection 层究竟有什么用我不大明白，但转换为 character_set_connection 的这个字符集之后，还要转换为数据库默认的字符集，也就是说要经过两次转换；当这个数据被输出时，又要由数据库默认的字符集转换为 character_set_results 指定的字符集。<br />
一个典型的环境</p>
<p>典型的环境以我自己的电脑上安装的 MySQL 4.1 为例，我自己的电脑上安装着 Apache 2，PHP 5 和 WordPress 1.5.1.3，MySQL 配置文件中指定了 default_character_set 为 utf8。于是问题出现了：</p>
<p>   1. WordPress 按照默认情况安装，所以所有的表都用 UTF-8 存储数据；<br />
   2. WordPress 默认采用的浏览字符集是 UTF-8 (Options->Reading 中设置)，因此所有 WP 页面的 meta 中会说明 charset 是 utf-8；<br />
   3. 所以浏览器会以 utf-8 方式显示所有的 WP 页面；这样一来 Write 的所有 Post，和 Comment 都会以 UTF-8 格式从浏览器发送给 Apache，再由 Apache 交给 PHP；<br />
   4. 所以 WP 从所有的表单中得到的数据都是 utf-8 编码的；WP 不加转换的直接把这些数据发送给 MySQL；<br />
   5. MySQL 默认设置的 character_set_client 和 character_set_connection 都是 latin1，此时怪异的事情发生了，实际上是 utf-8 格式的数据，被“当作 latin1”转换成……居然还是转换成 latin1，然后再由这个 latin1 转换成 utf-8，这么两次转换，有一部分 utf-8 的字符就丢失了，变成 ??，最后输出的时候 character_set_results 默认是 latin1，也就输出为奇怪的东西了。</p>
<p>最神奇的还不是这个，如果 WordPress 中设置以 GB2312 格式阅读，那么 WP 发送给 MySQL 的 GB2312 编码的数据，被“当作 latin1”转换后，存进数据库的是一种奇怪的格式 (真的是奇怪的格式，mysqldump 出来就能发现，无论当作 utf-8 还是当作 gb2312 来读都是乱码)，但如果这种格式以 latin1 输出出来，居然又能变回 GB2312！</p>
<p>这会导致什么现象呢？WP 如果使用 MySQL 4.1 数据库，把编码改用 GB2312 就正常了，可惜，这种正常只是貌似正常。<br />
如何解决问题</p>
<p>如果你已经不耐烦了 (几乎是肯定的)，google 一下，会发现绝大部分的解答是，query 之前先执行一下：SET NAMES 'utf8'，没错，这是解决方案，但本文的目的是说明，这为什么是解决方案。</p>
<p>要保证结果正确，必须保证数据表采用的格式是正确的，也就是说，至少能够存放所有的汉字，那么我们只有两种选择，gbk 或者 utf-8，下面讨论 utf-8 的情况。</p>
<p>因为配置文件设置的 default_character_set 是 utf8，数据表默认采用的就是 utf-8 建立的。这也应该是所有采用 MySQL 4.1 的主机提供商应该采用的配置。所以我们要保证的只是客户端与 MySQL 交互之间指定编码的正确。</p>
<p>这只有两种可能，客户端以 gb2312 格式发送数据，或者以 utf-8 格式发送数据。</p>
<p>如果以 gb2312 格式发送:</p>
<p><code>SET character_set_client='gb2312'<br />
SET character_set_connection='utf8' 或者<br />
SET character_set_connection='gb2312'</code></p>
<p>都是可以的，都能够保证数据在编码转换中不出现丢失，也就是保证存储入数据库的是正确的内容。</p>
<p>怎么保证取出的是正确的内容呢？考虑到绝大部分客户端 (包括 WP)，发送数据的编码也就是它所希望收到数据的编码，所以:</p>
<p><code>SET character_set_results='gb2312'</code></p>
<p>可以保证取出给浏览器显示的格式就是 gb2312。</p>
<p>如果是第二种情况，客户端以 utf-8 格式发送 (WP 的默认情况)，可以采用下述配置:</p>
<p><code>SET character_set_client='utf8'<br />
SET character_set_connection='utf8'<br />
SET character_set_results='utf8'<br />
</code><br />
这个配置就等价于 SET NAMES 'utf8'。<br />
WP 应该作什么修改</p>
<p>还是那句话，客户端要发给数据库什么编码的数据，数据库是不可能确切知道的，只能让客户端自己说明白，所以，WP 是必须发送正确的 SET... 给 MySQL 的。怎么发送最合适呢？台湾的 pLog 同仁给出了一些建议：</p>
<p>   1. 首先，测试服务器是否 >= 4.1，编译时是否加入了 UTF-8 支持；是则继续<br />
   2. 然后测试数据库以什么格式存储 ($dbEncoding)；<br />
   3. SET NAMES $dbEncoding</p>
<p>对于第二点，WP 的情况是不同的，按照上面的典型配置，只要用 WP，肯定数据库是用 UTF-8 存储的，所以要根据用户设置的以 GB2312 还是 UTF-8 浏览来判断 (bloginfo('charset'))，但这个值是要连接数据库以后才能得到的，所以效率最高的方式是连接数据库之后，根据这个配置设置一次 SET NAMES，而不必每次查询之前都设置一遍。</p>
<p>我的修改方式是这样的，在 wp_includes/wp-db.php 中增加:</p>
<p><coolcode linenum="no"><br />
function set_charset($charset)<br />
{<br />
    // check mysql version first.<br />
    $serverVersion = mysql_get_server_info($this->dbh);<br />
    $version = explode('.', $serverVersion);<br />
    if ($version[0] < 4) return; </p>
<p>    // check if utf8 support was compiled in<br />
    $result = mysql_query("SHOW CHARACTER SET like 'utf8'",<br />
                          $this->dbh);<br />
    if (mysql_num_rows($result) < = 0) return;</p>
<p>    if ($charset == 'utf-8' || $charset == 'UTF-8')<br />
        $charset = 'utf8';<br />
    @mysql_query("SET NAMES '$charset'", $this->dbh);<br />
}<br />
</coolcode></p>
<p>在 wp-settings.php 的 require (ABSPATH . WPINC . '/vars.php'); 后增加:</p>
<p><code>$wpdb->set_charset(get_bloginfo('charset'));</code></p>
<p>-- EOF --</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2006-12-27 -- <a href="http://www.lsproc.com/blog/mysql_encode_error_in_wordpress/" title="再谈Wordpress的MySQL乱码问题解决方法">再谈Wordpress的MySQL乱码问题解决方法</a> (3)</li><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2008-01-13 -- <a href="http://www.lsproc.com/blog/add_coolcode_quicktag_for_wordpress/" title="为wordpress添加coolcode插件的quicktag">为wordpress添加coolcode插件的quicktag</a> (0)</li><li>2007-11-05 -- <a href="http://www.lsproc.com/blog/mysql_export_and_import/" title="MySQL导出导入命令的用例">MySQL导出导入命令的用例</a> (0)</li><li>2007-09-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_4/" title="PHP 和 Mysql 学习笔记（四）">PHP 和 Mysql 学习笔记（四）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/mysql-encode-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>一切又重新开始了</title>
		<link>http://www.lsproc.com/blog/all-restart/</link>
		<comments>http://www.lsproc.com/blog/all-restart/#comments</comments>
		<pubDate>Sun, 26 Feb 2006 07:05:37 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Memory&Notes]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[乱码]]></category>

		<guid isPermaLink="false">http://lost.yi.org/blog/?p=6</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/all-restart/
昨天下午mysql出了点问题，结果导致blog的数据全部丢失，虽然有备份但是恢复回来出现很多乱码，整了半天最后还是放弃了，只好重新再来吧。 还是讨厌的InnoDB惹的祸，现在汉字改成了NCR(Numeric character reference) 来表示，以后就不怕乱码的问题了。

-- EOF --
Related Posts2006-12-27 -- 再谈Wordpress的MySQL乱码问题解决方法 (3)2010-01-11 -- cacti 图片中文乱码问题 (2)2008-03-18 -- lamp 相关配置 [Debian] (2)2008-03-05 -- 解决webalizer 汉化后图表中乱码的问题 (0)2007-11-05 -- MySQL导出导入命令的用例 (0)]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/all-restart/">http://www.lsproc.com/blog/all-restart/</a></p>
<p>昨天下午mysql出了点问题，结果导致blog的数据全部丢失，虽然有备份但是恢复回来出现很多乱码，整了半天最后还是放弃了，只好重新再来吧。<del datetime="2010-04-29T07:12:19+00:00"> 还是讨厌的InnoDB惹的祸，<a href="http://www.coolcode.cn/?p=5">现在汉字改成了NCR(Numeric character reference) 来表示</a>，以后就不怕乱码的问题了。<br />
</del>
<p>-- EOF --</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2006-12-27 -- <a href="http://www.lsproc.com/blog/mysql_encode_error_in_wordpress/" title="再谈Wordpress的MySQL乱码问题解决方法">再谈Wordpress的MySQL乱码问题解决方法</a> (3)</li><li>2010-01-11 -- <a href="http://www.lsproc.com/blog/cacti_graph_with_chinese/" title="cacti 图片中文乱码问题">cacti 图片中文乱码问题</a> (2)</li><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2008-03-05 -- <a href="http://www.lsproc.com/blog/webalizer_graphs_bad_encode/" title="解决webalizer 汉化后图表中乱码的问题">解决webalizer 汉化后图表中乱码的问题</a> (0)</li><li>2007-11-05 -- <a href="http://www.lsproc.com/blog/mysql_export_and_import/" title="MySQL导出导入命令的用例">MySQL导出导入命令的用例</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/all-restart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
