PHP向后兼容解析及mysql_real_escape_string在PHP7.1可用的疑问
问题解答
为什么PHP 7.1.33中mysql_real_escape_string()还能生效?
- 你的虚拟主机大概率做了兼容补丁:很多主机提供商为了留住老用户,不会直接砍掉所有旧PHP扩展的兼容。常见操作是通过民间维护的
ext/mysql移植版扩展,或者自动加载一个兼容脚本——用mysqli或PDO的相关函数模拟出mysql_real_escape_string()的功能,让旧代码能无缝运行。 - 排除误判函数名的情况后,基本就是主机的兼容措施在起作用。
为什么15年的旧代码至今没崩溃?
- 未触发致命错误场景:之前你的代码没遇到带撇号的输入,SQL注入风险没转化为运行错误;且代码逻辑简单,没用到PHP7彻底移除的其他过时特性(比如废弃的全局变量、老旧语法)。
- 主机版本平滑升级:虚拟主机大概率是从PHP5.x逐步升到7.1的,期间一直保留旧扩展的兼容支持,没让代码突然断档。
- 错误报告被压制:生产环境的PHP配置通常会把
error_reporting设得很低,甚至关闭display_errors,就算兼容层有警告或小错误,也不会显示出来,代码照样能继续运行。
内容的提问来源于stack exchange,提问作者Noted Authority
相关产品推荐
相关产品推荐

