先放php代码
其中有几个问题
1. host的值,原来在windows环境下的时候,用的是“localhost”,但在mac环境下,发现使用“localhost”会有问题,而使用“127.0.0.1”则可以成功。
2. mysql中存储中文的问题
一开始的时候,在终端模式下直接输入命令
insert into tb_user(name,password,phoneno,gender) values('博客航母','25d55ad283aa400af464c76d713c07ad','13812345678',1);
显示query ok,再输入命令“select * from tb_user;",可以看到中文显示成功;
然而,通过url方式访问,在浏览器地址栏直接输入:
http://localhost/ydj_bak/user/registeruser.php?username=%E5%8D%B3%E6%97%B6%E7%90%83%E5%A4%B4&password=iuqiqiq&phoneno=18923456789&verifycode=386181&gender=2
打印了”注册成功“,但读取数据库中内容之后,发现name字段是乱码,
之后,开始百度模式,先是在php中加入一句:
header("Content-Type: text/html;charset=utf-8");
然并卵,这句的作用是将该php文件的编码设置为utf8,但我这本来就是utf8的。
再接着,我怀疑,是不是在url调用时,传入的参数编码有问题,因此,增加了打印参数的语句和打印查询语句,再次url调用:
http://localhost/ydj_bak/user/registeruser.php?username=%E5%8D%B3%E6%97%B6%E7%90%83%E5%A4%B4&password=iuqiqiq&phoneno=18923456789&verifycode=386181&gender=2
结果显示:
username:即时球头
insert into tb_user(name,password,phoneno,gender) values('即时球头','ea33732cb79902ca06d837b4c9c8f320','18923456789',2)
可以看到,传入的参数没有问题,那么问题应该出在函数mysqli_query()上,果然,原来mysqli_query的默认编码不是utf8,那该怎么办呢?
可以将mysqli_query的编码设置为utf8,有两种方式:
1.执行语句set names 'utf8'
即在php代码中加入语句:
mysqli_query($connID,"set names 'utf8'");
2. 在php代码中加入语句:
mysqli_set_charset($connID,'utf8');
再试一下,中文可以成功保存了

最后补充两句,这一切的前提是mysql中的数据库和数据表的编码是UTF8,可以参考这篇文章:
http://www.server110.com/mariadb/201312/3918.html
其实,在mysql中建立的数据库最好默认编码就设置为utf8,utf8编码可以支持最多的语言。