工作中遇到的技术问题

12 篇文章 0 订阅

一. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值