我想我们中国人学编程老遇到一个问题就是中文乱码。特别在Linux环境下,解决中文是一件比较重要的事情。
这节开始正式进入PHP的学习中,对于一门语言,特别WEB语言,和数据库打交道是必不可少的。所以我也不从什么PHP语法,面向对象思想那些来开始,直接就看如何去连接数据库。
利用PHPMyAdmin建立一个数据库叫bbs,然后创建一个表。
CREATE TABLE `message` (
`id` tinyint(1) NOT NULL auto_increment,
`user` varchar(25) NOT NULL,
`title` varchar(50) NOT NULL,
`content` tinytext NOT NULL,
`lastdate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
我采用UTF8 为了和Linux统一一下编码。
建立文件conn.php
<?php
$conn = @mysql_connect("localhost", "root", "123456") or die(mysql_error());
//if ($conn){
// echo 'success';
//}
mysql_select_db("bbs", $conn);
mysql_query("set names 'utf8'"); //使用utf8中文编码;
?>
写一个简单的插入页面add.php
<?php
include("conn.php");
if($_POST['submit']){//接收name="submit"
$sql="insert into message (id,user,title,content,lastdate)
values ('','$_POST[user]','$_POST[title]','$_POST[content]',now())";
// echo $sql;
mysql_query($sql);
}
?>
<form action="add.php" method="post">
用户:<input type="text" /> <br>
标题:<input type="text" /><br>
内容:<textarea rows="5" cols="16"></textarea>
<input type="submit" value="提交" />
</form>
插入几条命令之后,再去PHPMyAdmin看一下,没有出现乱码。
简单的输出 list.php
<?php
include 'conn.php';
$sql="select * from message";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
echo "标题:".$row[title]."<br><hr>";
echo "用户:".$row[user]."<br><hr>";
echo "内容:".$row[content]."<br><hr>";
echo "日期:".$row[lastdate]."<br><hr>";}
?>
用客户端连接,避免出现中文乱码,方法如下。
linux-k2b4:~ # mysql --default-character-set=utf8 -uroot -p123456
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 107
Server version: 5.0.51a SUSE MySQL RPM
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use bbs
Database changed
mysql> select * from message;
+----+---------+-----------+----------------------------+------------+
| id | user | title | content | lastdate |
+----+---------+-----------+----------------------------+------------+
| 3 | fantlam | php学习 | opensuse之php学习之旅 | 2009-12-22 |
| 4 | 我 | 中文 | 解决中文乱码 | 2009-12-22 |
+----+---------+-----------+----------------------------+------------+
2 rows in set (0.00 sec)
这样输出就已经是中文了,如图: