心理历程:
经过一个多星期的制作,终于完成了评论模块的一些功能,包括评论,回复,点赞,收起回复,展开回复,以及emoji表情的插入。
制作的过程往往不是一帆风顺的,在制作过程中,总会遇到许多的问题。遇到问题就解决问题,没有问题时,就按照自己的构思有序进行。就在快要制作完成发布代码的时候,突然发现自己的表情插入不到数据库,经过一系列的百度,修改了数据库的默认字符集还是不行,搞了半天,原来发现是自己连接数据库时的默认字符集,没有修改。最后,表情终于插入到数据库,并且正常显示到页面,我以为万事大吉的时候,突然又发现点击表情之后,回复的评论会覆盖这个表情。然后我就给这个回复的评论添加一个z-index=-1,看似是解决了问题,当提交完代码远程操控的时候,发现回复的评论无法点击,回复评论的标签都相当于没有效果一样。真是这个bug解决了,凭空又出现一个bug,一头雾水不知道怎么回事。最后找了半天才发现,原来是因为我把z-index设置成了-1,导致回复的评论在其他的标签之下。就造成了标签失效,没有效果的假象。终于今天完工啦!
1.emoji表情插入MySQL数据库
出现的问题:emoji表情插入到MySQL数据库显示为空,插入不进去。
问题产生的原因:
- MySQL支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常,而emoji表情刚好是4字节,导致表情插入不到MySQL数据库;
解决方法:
-
MySQL 5.5.3版本之后新增了utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode;包括Emoji表情。
-
首先要在创建表的时候就设置默认字符集为utf8mb4; 当然也可以直接修改默认字符集。
-
routeContent TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '路线评论内容',
-
最重要的一步,我就是卡在这一步,数据库表中列属性默认字符集为utf8mb4后,一定要记得修改连接数据库的默认字符集也要为utf8mb4;
成功解决:
2.z-index的值
切记千万不要设置 z-index=-1;这样的话所有标签都覆盖在它的上面,因为标签默认的z-index=0;
3.JavaScript返回上一页代码
history.go(-2);//返回前两页
window.history.go(-1); //返回上一页
window.history.back(); //返回上一页
4.PHP二维数组动态录入数据
使用php函数array_push给数组添加值,这里array_push的第一个参数为数组变量名,后面的参数为一维数组
$minAll=Array();
while($row_allMin=mysql_fetch_array($result_allMin)){
array_push($minAll,Array($row_allMin['id'],$row_allMin['maxID'],$row_allMin['user1ID'],$row_allMin['user2ID'],$row_allMin['userImg'],$row_allMin['user1Name'],$row_allMin['user2Name'],$row_allMin['routeContent'],$row_allMin['likes'],$row_allMin['messageTime']));
}
$minAll 可以使用数组下标获取内容。
5.PHP中获取:MySQL利用insert插入一条记录的ID
if(mysql_query($into_comment)){
$keyId = mysql_insert_id();//获取插入这条数据的ID
$data='{keyId:'.$keyId.',id:'.$id.',uid:'.$uid.',uname:"'.$uname.'",headimg:"'.$headimg.'",text:"'.$text.'",times:"'.$times.'"}';//组合成json格式数据
echo json_encode($data);//输出json数据
}