一. trim
问题:
答案:
rtrim不是多字节函数,所以像汉字这样的多字节字符,会被拆分成单字节与后面要删除掉的字符匹配 如果合适就会被删除掉这样就会产生乱码
二. ajax跨域
server的nginx配置中添加:
add_header Access-Control-Allow-Origin "*";
add_header Access-Control-Allow-Headers "X-Requested-With";
三.跨域设置cookie
1.第一种方法(使用p3p)
PHP设置p3p的方法:
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
四.解决图片上传问题
1.imagecreatefromjpeg函数(问题是 上传png jif的图都没问题 但是上传jpg的有问题了)
解决: 需要在加下php的扩展
五. 中文字符长度不一样
有时会出现同样的中文字符长度不一样, 例如'广州' , 有的长度是6 , 有的是9?
解决:
出现的原因就是 有的中文字符后面会带着无法显示的非中文字符, 解决办法就是将非中文字符删除掉, 删除之后长度就一样了.
代码如下:
//剔除str1字串中未显示的字符(非中文字符)
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);
$str1 = join('', $matches[0]);
参考文档: https://blog.csdn.net/summerxiachen/article/details/78575051
六.NULL和空值
1、空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。
2、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。
3、判断NULL 用IS NULL 或者 is not null,SQL 语句函数中可以使用IFNULL()函数来进行处理,判断空字符用 =’‘或者<>’'来进行处理。
4、在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值是会进行统计到其中的。
5、MySql中如果某一列中含有NULL,那么包含该列的索引就无效了。这一句不是很准确。
6:实际到底是使用NULL值还是空值(’’),根据实际业务来进行区分。个人建议在实际开发中如果没有特殊的业务场景,可以直接使用空值。
七.一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把MySQL重启,再Insert一条记录,这条记录的ID是18还是15.
答: 在MySQL 8.0之前:
1)如果是MyISAM表,则数据库重启后,ID值为18
2)如果是InnoDB表,则数据库重启后,ID值为15
自增列的信息在MyISAM和InnoDB中的维护逻辑是不大一样的,在MyISAM中是存储持久化在文件中的,当数据库重启之后,是可以通过持久化的信息持续对ID进行自增的,而InnoDB的自增列信息既不在.frm文件,也不在.ibd文件中,所以在此启动的时候会按照max(id)+1的算法进行修复
在MySQL 8.0开始,
1)如果是MyISAM表,则数据库重启后,ID值为18
2)如果是InnoDB表,则数据库重启后,ID值为18
而在MySQL 8.0之后, 自增列的信息写入了共享表空间中,所以服务重启之后,还是可以继续追溯这个自增列的ID变化情况的。
参考文档: https://blog.csdn.net/u010648555/article/details/94555199