php进阶面试题总结
php进阶面试题总结 一、总结 一句话总结: 工作之后,一定要及时总结深入学习,别被温水煮青蛙了 1、mysql_real_escape_string mysql_escape_string有什么本质的区别,有什么用处,为什么被弃用? a、mysql_real_escape_string需要预先连接数据库,并可在第二个参数传入数据库连接(不填则使用上一个连接) b、两者都是对数据库插入数据进行转义,但是mysql_real_escape_string转义时,会考虑数据库连接的字符集。 c、它们的用处都是用来能让数据正常插入到数据库中,并防止sql注入,但是并不能做到100%防止sql注入。 再问:为什么不能100%防止? 答;因为客户端编码以及服务器端编码不同,可能产生注入问题,但是其实这种场景不多见。 继续答:被弃用的原因是官方不再建议使用mysql_xx的数据库操作方式,建议使用pdo和mysqli,因为不管从性能跟安全来看,mysqli都比mysql要好。 衍生出来的问题是mysqli的连接复用(持久化)问题,这一块我并没有答好。 2、什么是内存泄漏,js内存泄漏是怎么产生的? 内存泄漏是因为一块被分配内存既不能被使用,也不能被回收,直到浏览器进程结束。 产生泄漏的原因是闭包维持函数内局部变量,不能被释放,尤其是使用闭包并存在外部引用还setInterval的时候危害很大。