关于mysql读取、写入出现乱码的解决方法(个人总结)
我使用的是apserv安装包,安装时语言我选择的是gb2312,后来在建立新的数据库时,‘整理’选择的是utf8,接下来在表中参数类型基本选择的都是utf8,接下来我就直接调用啦,嘎嘎,我写的是一个简单的留言本。最简单的读取数据库写入数据库的程序,嘎嘎!奇怪的是在数据库里面直接操作中文显示都很正常。可是一到网页上读取留言信息时,中文全部是问号?,然后我又试着写出写留言代码试试看,orz,读进去的都是那个不知道什么符号。。。
于是乎我就去网上翻天覆地的找了好久,终于KO了这个问题,嘎嘎。
首先声明本人初学,只能保证我这种方法是能够解决读取写入乱码的。但是不代表只能这样做。。。
我的解决方法如下:
1.my.ini文件中的
[mysql]
default-character-set = utf8 //此处设置为utf8,注意不是utf-8
2.在连接数据库选择表之后,操作数据前,添加一句 mysql_query("SET NAMES 'GB2312'");
嘎嘎,1不确定是不是必要的,但是我确定2是必要的,其他的就是在表中数据尽量采用utf8.
这样问题就解决啦!
好,展示下个人写的第一个超超超超简单的留言本程序,刚学php,没做格式控制,大家别笑话。这是纯手写哦!
/*首页读取留言信息的代码index.php*/
<?php include("include/config.php");?>
<?PHP include("include/head.php");?>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>留言本</title>
</head>
<body>
<p>
<?php include("include/conn.php");
$q = "SELECT * from lyb";
mysql_query("SET NAMES 'GB2312'"); // 防止出现乱码
?>
<?
$rs = mysql_query($q, $dbh);
/*输出数据并分行*/
while($row = mysql_fetch_array($rs)) echo "序号$row[id] 姓名:$row[name] qq:$row[qq] 内容:$row[content]<br/>";
?>
<?php include("include/foot.php")?>
</p>
<p><a href="input2.php">写留言</a></p>
/*input2.php至于为什么取名为2,因为设置了两种写入页面,嘎嘎*/
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>留言</title>
</head>
<body>
<form method="post" action
相关文档:
一直以为mysql随机查询几条数据,就用
SELECT * from `table` ORDER BY RAND() LIMIT 5
就可以了。
但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上
查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。
You cannot use a column with RAND() values i ......
今天,要用explain查看mysql的执行规划,但是和PostgreSQL不同的是,直接在mysql里面执行的结果可读性不是很好,上网搜了一圈,发现了一个工具maatkit,可以讲explain的结果转化为树状结构查看,呵呵,方便了很多
安装办法:
1. sudo yum install mysql
2. sudo yum install mysql-server
3. wget http://maatkit.googl ......
1、登陆MySQL:
mysql -u root -p
2、查看用户信息
select user,host,password from mysql.user;
select user,host from mysql.user;
3、设置密码
set password for root@localhost=password('
在这里填入root密码
');
4、修改密码
方法1:mysqladmin -u root -p password newpassword
方法2: #mysql -u root ......
在WindowsXP中打开DOS,通过输入命令“mysql -u root -p”切换到mysql下,切换失败,如下所示:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\>mysql -u root -p
'mysql' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
......